[프로그래머스/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
위에서 알려주신대로 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%
[프로그래머스 1단계] 문자열 내 마음대로 정렬하기 -c++ (1) | 2024.02.24 |
---|---|
[프로그래머스 1단계] 가장 가까운 같은 글자 -c++ (0) | 2024.02.24 |
[프로그래머스 1단계] 콜라 문제 -c++ (0) | 2024.02.24 |
[프로그래머스 1단계] 둘만의 암호 - c++ (사례 3, 17,18, 19해결) (0) | 2024.02.23 |
[프로그래머스 1단계] 문자열 나누기 - c++ (1) | 2024.02.23 |
댓글 영역