프로그래머스의 로또의 최고 순위와 최저 순위(Lv1) 문제이다.
[ 문제풀이 ]
로또 번호 6개 중에서, 알 수 없는 번호들이 주어졌을 때 최고 순위와 최저 순위를 맞춰야 하는 문제이다.
먼저 간단한 예시를 한 가지 들어보자.
로또 당첨 번호가 [ 1 , 2 , 3 , 4 , 5 , 6 ] 이고 민우가 가지고 있는 로또 번호가 [ 1 , 2 , 3 , 4 , 0 , 0 ] 이라고 가정해보자.
이 상황에서 최고순위는 1등이 될 것이다.
왜냐하면, 로또 번호를 [ 1 , 2 , 3 , 4 , 5 , 6 ] 으로 바꿔버리면 모든 숫자가 일치하기 때문이다.
반대로, 최저순위는 3등이 될 것이다.
[ 1 , 2 , 3 , 4 , 0 , 0 ] 에서 존재하는 [ 0 , 0 ]을 [ 5 , 6 ] 을 제외한 나머지 어떤 숫자로 바꾸기만 하면, [ 1 , 2 , 3 , 4 ] 4개만 맞추는 꼴이 되기 때문이다.
여기서 핵심은, "무슨 숫자로 바꿀지는 알 필요가 없다" 라는 것이다. 단지, 몇 개의 숫자를 알 수 없는지 그리고 몇 개의 숫자가 일치하는지 이 갯수만 알고 있으면 된다.
[ 1 , 2 , 3 , 4 , 5 , 6 ]
[ 1 , 2 , 3 , 4 , 0 , 0 ] 이 있다.
여기서 이미 [ 1 , 2 , 3 , 4 ] 4개의 숫자는 일치하는 숫자들이다.
그리고, 알 수 없는 숫자는 [ 0 , 0 ] 2개이다.
여기서 최고순위는 "일치하는 숫자의 갯수 + 알 수 없는 숫자의 갯수" 가 된다.
즉 ! 위의 예시에서는 4 + 2 = 6개를 맞췄을 때가 최고 순위가 된다.
반대로, 최저순위는 "일치하는 숫자의 갯수" 가 된다.
즉 ! 위의 예시에서는 4개를 맞췄을 때가 최저 순위가 된다.
한 가지 예를 더 들어보자.
[ 1 , 2 , 3 , 4 , 5 , 6 ]
[ 7 , 8 , 9 , 0 , 0 , 0 ]
위와 같은 예시가 있다고 가정해보자.
일치하는 숫자의 갯수 = 0 개
알 수 없는 숫자의 갯수 = 3개 인 상태이다.
여기에서 최고순위는 "일치하는 숫자의 갯수 + 알 수 없는 숫자의 갯수" 인 0 + 3 = 3개를 맞췄을 때가 최고 순위가 된다.
반대로, 최저순위는 "일치하는 숫자의 갯수" 인 0개를 맞췄을 때가 최저 순위가 된다.
이처럼, 주어진 상태를 보고 일치하는 숫자의 갯수와, 알 수 없는 숫자의 갯수를 통해서 최고순위와 최저순위를 구할 수가 있다.
[ 소스코드 ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
#include <string>
#include <vector>
using namespace std;
int Convert(int x)
{
if (x == 6) return 1;
if (x == 5) return 2;
if (x == 4) return 3;
if (x == 3) return 4;
if (x == 2) return 5;
return 6;
}
vector<int> solution(vector<int> lottos, vector<int> win_nums)
{
vector<int> answer(2);
int Zero_Cnt = 0;
int Same_Cnt = 0;
for (int i = 0; i < lottos.size(); i++)
{
if (lottos[i] == 0) Zero_Cnt++;
else
{
for (int j = 0; j < win_nums.size(); j++)
{
if (lottos[i] == win_nums[j])
{
Same_Cnt++;
break;
}
}
}
}
int Low = Same_Cnt;
int High = Same_Cnt + Zero_Cnt;
High = Convert(High);
Low = Convert(Low);
answer = { High , Low };
return answer;
}
|
cs |
'[ Programmers Code ] > # PG - Level1' 카테고리의 다른 글
[ 프로그래머스 부족한 금액 계산하기 (Lv1) ] (C++) (2) | 2021.08.10 |
---|---|
[ 프로그래머스 숫자 문자열과 영단어 (Lv1) ] (C++) (2) | 2021.07.12 |
[ 프로그래머스 다트게임 (Lv1) ] (C++) (0) | 2021.04.05 |
[ 프로그래머스 실패율 (Lv1) ] (C++) (4) | 2021.03.30 |
[ 프로그래머스 비밀지도 (Lv1) ] (C++) (2) | 2021.03.29 |