본문 바로가기

프로그래밍/알고리즘

프로그래머스 : 모의고사 _ C++

https://school.programmers.co.kr/learn/courses/30/lessons/42840#

 

프로그래머스

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

programmers.co.kr

#완전탐색 #lv.1

 

회고

 

처음에 분명 문제를 잘 풀었다고 생각하고 제출했는데 틀렸습니다가 우수수 나와서 당황했었다.

알고보니까 sort 함수에 새로 만든 cmp 비교 함수를 까먹고 안넣어서 ㅋㅋ.. 틀린거였다 ㅜㅜ (바본가..)

이거때문에 10분은 헤맨거같은데.. 까먹지 않도록 주의해야겠다.

아무튼 문제 자체는 어렵지 않아 빠르게 풀 수 있었다.

 

코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

bool cmp(pair<int, int>a, pair<int, int>b) {
    if (a.second == b.second) {
        return a.first < b.first;
    }
    return a.second > b.second;
}

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    int n1[] = { 1, 2, 3, 4, 5 }; //5
    int n2[] = { 2, 1, 2, 3, 2, 4, 2, 5 }; //8
    int n3[] = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 }; //10
    pair<int, int> cnt[3] = { {1,0},{2,0},{3,0} };
    
    for (int i = 0; i < answers.size(); i++) {
        if (n1[i % 5] == answers[i]) cnt[0].second++;
        if (n2[i % 8] == answers[i]) cnt[1].second++;
        if (n3[i % 10] == answers[i]) cnt[2].second++;
    }

    sort(cnt, cnt + 3, cmp);

    pair<int, int> max = cnt[0];
    for (int i = 0; i < 3; i++) {
        if (cnt[i].second == max.second) {
            answer.push_back(cnt[i].first);
        }
    }
    return answer;
}
Recent Posts
Popular Posts