프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제


제출한 코드
import java.util.List;
import java.util.Arrays;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
List<Integer> numbers = Arrays.stream(win_nums).boxed().toList();
int match = 0;
int zeros = 0;
for (int n : lottos) {
if (n == 0) zeros++;
else if (numbers.contains(n)) match++;
}
return new int[] { rank(match + zeros), rank(match) };
}
private int rank(int num) {
return switch (num) {
case 6 -> 1;
case 5 -> 2;
case 4 -> 3;
case 3 -> 4;
case 2 -> 5;
default -> 6;
};
}
}
풀이
순서에 관계 없이 wins_num 배열 안에 있는 숫자와 일치하면 match가 하나씩 증가하도록 했다.
contains() 를 사용하기 위해 먼저 wins_num 배열을 List로 바꿔주었다.
이후 lottos 배열 안에 있는 숫자를 하나씩 비교하여,
만약 해당 숫자가 0이면 zeros에 1을,
만약 해당 숫자가 numbers 안에 포함되어 있다면 match에 1을 더해주었다.
이후 rank 라는 함수를 사용하여 최고 순위와 최저 순위가 포함된 배열을 반환하도록 했다.
rank 는 switch 문을 사용해서 작성했다.
case문을 ' -> ' 라는 표기식을 사용하면 보다 더 간략하게 switch-case 문을 작성할 수 있다.
'프로그래머스' 카테고리의 다른 글
| [프로그래머스] 131128번 - 숫자 짝꿍 [Java] (0) | 2026.06.08 |
|---|---|
| [프로그래머스] 133499번 - 옹알이 (2) [Java] (0) | 2026.06.05 |
| [프로그래머스] 136798번 - 기사단원의 무기 [Java] (0) | 2026.06.02 |
| [프로그래머스] 159994번 - 카드 뭉치 [Java] (0) | 2026.05.22 |
| [프로그래머스] 12901번 - 2016년 [Java] (0) | 2026.05.21 |