728x90
https://programmers.co.kr/learn/courses/30/lessons/77484
문제 풀이
알아볼 수 없는 숫자(0)의 개수는 unknown으로 저장하고 그 외에 숫자를 당첨 숫자에 비교해서 cnt에 저장한다.
0이 모두 당첨 숫자가 된다면 rank는 최고가 될 것이고 모두 당첨 숫자가 아니라면 rank가 최저가 될 것이다.
따라서 cnt에 unknown을 더한 값을 계산했을 때 최고 순위, cnt만 따질 때 최저 순위가 된다.
느낀 점
문제가 쉽기 때문에 코드를 최대한 간단하게 작성하려고 했다. 최선으로 작성했는데 다른 분들의 코드에 비교하면 나름 적당한 길이인 것 같다.
코드
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int get_rank(int num) {
if (num <= 1) return 6;
return 7 - num;
}
vector<int> solution(vector<int> lottos, vector<int> win_nums) {
vector<int> answer;
int unknown = 0, cnt = 0;
for (int l : lottos) {
if (l == 0) unknown++;
for (int i = 0; i < 6; i++) {
if (l == win_nums[i]) cnt++;
}
}
answer.push_back(get_rank(unknown + cnt));
answer.push_back(get_rank(cnt));
return answer;
}
'문제 풀이 > 프로그래머스 (Programmers)' 카테고리의 다른 글
[C++] 프로그래머스 : 약수의 개수와 덧셈 (0) | 2021.09.13 |
---|---|
[C++] 프로그래머스 : 키패드 누르기 (0) | 2021.09.13 |
[C++] 프로그래머스 : 완주하지 못한 선수 (0) | 2021.07.01 |
[C++] 프로그래머스 : 폰켓몬 (0) | 2021.06.24 |
[C++] 프로그래머스 : 소수 만들기 (LvL 1) (0) | 2021.05.24 |
댓글