문제: https://school.programmers.co.kr/learn/courses/30/lessons/77484
1. 코드
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
int zero = 0;
int same = 0;
for(int n : lottos) {
if(n == 0) {
zero++;
continue;
}
for(int win : win_nums) {
if(n == win) {
same++;
break;
}
}
}
answer[0] = Math.min(7 - zero - same, 6);
answer[1] = Math.min(7 - same, 6);
return answer;
}
}
2. 설명
int zero = 0;
int same = 0;
zero는 알 수 없는 번호의 수이며, same은 구매한 로또의 번호와 당첨 번호의 일치하는 갯수이다.
for(int n : lottos) {
if(n == 0) {
zero++;
continue;
}
for(int win : win_nums) {
if(n == win) {
same++;
break;
}
}
}
반복문을 통해서 로또의 번호가 0이라면 zero를 증가시키고, 다음 수로 넘어가며 당청 번호와 동일한 번호를 찾으면 same을 증가시킵니다.
answer[0] = Math.min(7 - zero - same, 6);
answer[1] = Math.min(7 - same, 6);
return answer;
answer[0]에는 최고의 순위를 저장하며 answer[1]에는 최저의 순위를 저장하면 문제는 해결됩니다. Math.min을 사용한 이유는 6이하의 순위는 전부 6위이기에 사용되었습니다.
3. 정리
- 최고의 순위와 최저의 순위는 특별한 조건이 없기에 쉽게 해결이 가능하다.
출처: 프로그래머스 코딩 테스트 연습,
https://school.programmers.co.kr/learn/challenges
'컴퓨터 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 133499번: 옹알이 (2) [Java] (0) | 2023.08.05 |
---|---|
프로그래머스 - 131128번: 숫자 짝궁 [Java] (0) | 2023.08.04 |
프로그래머스 - 17682번: [1차] 다트 게임 [Java] (0) | 2023.08.02 |
프로그래머스 - 136798번: 기사단원의 무기 [Java] (0) | 2023.08.01 |
프로그래머스 - 161989번: 덧칠하기 [Java] (0) | 2023.07.31 |