-
[프로그래머스] 로또의 최고 순위와 최저 순위 c++Coding Test/programmers 2022. 8. 18. 12:13728x90
문제 설명
내가 고른 번호는 lottos 벡터에 저장되어 있고, 0은 알 수 없는 수이다.
당첨 번호는 win_nums 벡터에 저장되어 있다.
내가 고른 로또의 최고 순위와 최저 순위를 구하는 문제이다.
제한 사항
- lottos는 길이 6인 정수 배열입니다.
- lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
- 0은 알아볼 수 없는 숫자를 의미합니다.
- 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
- lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
- win_nums은 길이 6인 정수 배열입니다.
- win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
- win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
- win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.
입출력 예
lottos win_nums result [44, 1, 0, 0, 31, 25] [31, 10, 45, 1, 6, 19] [3, 5] [0, 0, 0, 0, 0, 0] [38, 19, 20, 40, 15, 25] [1, 6] [45, 4, 35, 20, 3, 9] [20, 9, 3, 45, 4, 35] [1, 1] 풀이
check point!
1. 0 개수 = zero
2. 0이 아닌 원소 중 당첨된 번호 개수 = cnt
위의 1, 2번을 이용하여 최대 순위, 최소 순위를 구할 수 있다.
#include <string> #include <vector> using namespace std; vector<int> solution(vector<int> lottos, vector<int> win_nums) { vector<int> answer; int zero = 0, cnt = 0; for(const auto &it : lottos){ if( 0 == it){ zero += 1; } } for(const auto &lo : lottos){ for(const auto &win : win_nums){ if(lo == win){ cnt++; break; } } } if( cnt == 0){ cnt++; if(zero == 6){ zero--; } } int a = 7 - (zero + cnt); int b = 7 - cnt; answer.push_back(a); answer.push_back(b); return answer; }
728x90'Coding Test > programmers' 카테고리의 다른 글
[프로그래머스] 숫자 문자열과 영단어 c++ (0) 2022.08.18 [프로그래머스] 신규 아이디 추천 c++ (0) 2022.08.18 [프로그래머스] 최소직사각형 c++ (0) 2022.08.17 [프로그래머스] 신고 결과 받기 c++ (0) 2022.08.17 [프로그래머스] 같은 숫자는 싫어 c++ (0) 2022.08.01