상세 컨텐츠

본문 제목

[프로그래머스 1단계] 실패율 - c++ (테스트 6,7,9,13,24 실패 해결)

알고리즘/프로그래머스 1단계

by 셉인 2024. 2. 24. 10:03

본문

728x90

[프로그래머스/1단계] 실패율 - c++ (테스트 6,7,9,13,24 실패 해결)

 

이번 문제를 한 줄 정리 하자면 

한 끗 차이

 

라고 할 수 있다.

테스트 케이스 다 맞고 일부분 실패가 뜨길래

코드를 다시 보고 잘못된 경우가 없어 보이면 문법적인 문제거나 한 끗차이인 부분이 있던적이 많아서 질문하기 페이지에 들어가면 같은 고민을 하셨던 분들의 질문과 답이 있어 참고하기 좋다. 

 

수정 전 코드

#include <string>
#include <vector>
#include <utility>
#include <algorithm>
#include <iostream>

using namespace std;

bool compare( pair<int, double>& a,  pair<int, double>& b) {
    // f 값을 기준으로 내림차순 정렬
    if (a.second != b.second) {
        return a.second > b.second;
    }
    // f 값이 같은 경우 j를 기준으로 오름차순 정렬
    return a.first < b.first;
}

vector<int> solution(int N, vector<int> stages) {
    vector<int> answer;
    int f = 0;
    int cnt = 0;
    double k = 0;
    vector<pair<int, double>> fail;

    for (int j = 1; j <= N; j++) {
        f = 0;
        for (int i = 0; i < stages.size(); i++) {
            if (stages[i] == j) {
                f++;
            }
        }
        k = (f * 10.0) / (stages.size() - cnt); 
        cnt += f; 
        fail.push_back(make_pair(j, k));
    }

    sort(fail.begin(), fail.end(), compare);
    // 정렬된 fail 벡터에서 j 값을 answer 벡터에 추가
    for (auto& pair : fail) {
        answer.push_back(pair.first);
    }

    return answer;
}

맞은 것 같은데 왜 틀렸지 싶었다.

그래서 질문하기 페이지를 살펴보았다.

https://school.programmers.co.kr/questions/35831

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

위에서 알려주신대로 stable_sort로 바꿔주었다.

근데 compare에서 const안붙이면 에러나길래 붙여줬다.

const를 통해 변수를 상수 (변하지 않는 값)으로 바꿔줬다.

bool compare(const pair<int, double>& a, const pair<int, double>& b)

stable_sort(fail.begin(), fail.end(), compare);

 

성공한 코드

#include <string>
#include <vector>
#include <utility>
#include <algorithm>
#include <iostream>

using namespace std;

bool compare(const pair<int, double>& a, const pair<int, double>& b) {
    // f 값을 기준으로 내림차순 정렬
    if (a.second != b.second) {
        return a.second > b.second;
    }
    // f 값이 같은 경우 j를 기준으로 오름차순 정렬
    return a.first < b.first;
}

vector<int> solution(int N, vector<int> stages) {
    vector<int> answer;
    int f = 0;
    int cnt = 0;
    double k = 0;
    vector<pair<int, double>> fail;

    for (int j = 1; j <= N; j++) {
        f = 0;
        for (int i = 0; i < stages.size(); i++) {
            if (stages[i] == j) {
                f++;
            }
        }
        k = (f * 10.0) / (stages.size() - cnt); 
        cnt += f; 
        fail.push_back(make_pair(j, k));
    }

    stable_sort(fail.begin(), fail.end(), compare);
    // 정렬된 fail 벡터에서 j 값을 answer 벡터에 추가
    for (auto& pair : fail) {
        answer.push_back(pair.first);
    }

    return answer;
}

 

 

[프로그래머스/1단계] 실패율 - c++ (테스트 6,7,9,13,24 실패 해결)

정답률 60%

728x90

관련글 더보기

댓글 영역