GitHubSeob
C++ / 프로그래머스 / 로또의 최고 순위와 최저 순위 본문
문제
https://programmers.co.kr/learn/courses/30/lessons/77484
코딩테스트 연습 - 로또의 최고 순위와 최저 순위
로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호
programmers.co.kr
문제풀이
lottos의 숫자와 win_nums의 숫자가 같은 개수를 찾는 문제이다.
실제 로또와 다른 점은 0이 있다는 점이다.
만약 0이 당첨숫자이면 최고 순위, 0이 당첨숫자가 아니면 최저 순위이다.
따라서 0이 아닌 수 일 때는 둘의 번호가 일치하는지 확인하고, 0인 수가 있으면 따로 변수를 지정하여 개수를 센다.
5등까지는 등수+일치한 번호 개수 = 7이다.
최고 순위 = answer[0], 최저 순위 = answer[1]
당첨 개수와 0의 개수가 2 이상이라면 answer[0]에 7-(당첨 개수+0의 개수)의 값을 넣어주고,
2 미만 이면 answer[0]에 6 값을 넣는다.
answer[1]은 당첨 개수로만 판별한다.
코드
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> lottos, vector<int> win_nums) {
vector<int> answer;
int win = 0;
int zero = 0;
int x = 0, x2 = 0;
for (x = 0; x < 6; ++x) {
if (lottos[x] == 0) zero++;
else {
for (x2 = 0; x2 < 6; ++x2) {
if (lottos[x] == win_nums[x2]) {
win++;
break;
}
}
}
}
if ((win + zero) >= 2) answer.push_back(7 - (win + zero));
else answer.push_back(6);
if (win >= 2) answer.push_back(7 - win);
else answer.push_back(6);
return answer;
}
'Programmers > Level 1' 카테고리의 다른 글
C++ / 프로그래머스 / 모의고사 (0) | 2021.08.08 |
---|---|
C++ / 프로그래머스 / 체육복 (0) | 2021.08.04 |
C++ / 프로그래머스 / 행렬의 덧셈 (0) | 2021.08.04 |
C++ / 프로그래머스 / 직사각형 별찍기 (0) | 2021.08.04 |
C++ / 프로그래머스 / 위클리 챌린지 1주차 / 부족한 금액 계산하기 (0) | 2021.08.03 |