728x90
🔗 문제 링크
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
📌 문제 개요
로또 번호 6개와 당첨 번호 6개가 주어진다.
구매한 로또 번호 중 0은 알아볼 수 없는 번호를 의미하며, 어떤 번호로도 변경될 수 있다.
이를 이용하여 당첨 가능한 최고 순위와 최저 순위를 배열로 반환하는 문제이다.
📌 접근 방법
로또 번호를 한 번 순회하면서 0의 개수와 당첨 번호와 일치하는 개수를 각각 계산한다.
- 0은 어떤 번호든 될 수 있으므로 최고 순위는 일치 개수 + 0의 개수이다.
- 최저 순위는 현재 일치한 개수 그대로 계산한다.
순위 계산은 별도의 메서드로 분리하여 처리하였다.
📌 핵심 아이디어
1. 0의 개수와 일치 개수를 동시에 계산
0은 비교할 필요가 없으므로 continue를 사용하여 다음 번호로 넘어간다.
당첨 번호를 찾으면 break를 사용하여 불필요한 비교를 줄였다.
for (int lotto : lottos) {
if (lotto == 0) {
zero++;
continue;
}
for (int w : win_nums) {
if (lotto == w) {
win++;
break;
}
}
}
2. 최고 순위와 최저 순위 계산
- 최고 순위 : 현재 일치 개수 + 0의 개수
- 최저 순위 : 현재 일치 개수
int[] result = {
getRank(zero + win),
getRank(win)
};
3. 순위 계산 공식 활용
순위 규칙은 다음과 같다.
static int getRank(int count) {
return Math.min(6, 7 - count);
}
| 일치 개수 | 순위 |
| 6 | 1 |
| 5 | 2 |
| 4 | 3 |
| 3 | 4 |
| 2 | 5 |
| 1, 0 | 6 |
이를 이용하면
- 7 - count로 기본 순위를 계산하고,
- 0개 또는 1개 일치 시 7이 나오므로 Math.min(6, ...)을 사용하여 6등으로 처리할 수 있다.
복잡한 조건문 없이 한 줄로 순위를 계산할 수 있다.
📌 전체 코드
package level1;
import java.util.Arrays;
public class No67 {
public static void main(String[] args) {
int[] lottos = {44, 1, 0, 0, 31, 25};
int[] win_nums = {31, 10, 45, 1, 6, 19};
int zero = 0;
int win = 0;
for (int lotto : lottos) {
if (lotto == 0) {
zero++;
continue;
}
for (int w : win_nums) {
if (lotto == w) {
win++;
break;
}
}
}
int[] result = {
getRank(zero + win),
getRank(win)
};
System.out.println(Arrays.toString(result));
}
static int getRank(int count) {
return Math.min(6, 7 - count);
}
}
📄 정리
- 로또 번호를 한 번 순회하면서 0의 개수와 일치 개수를 계산했다.
- 최고 순위는 일치 개수 + 0의 개수, 최저 순위는 일치 개수를 사용했다.
- Math.min(6, 7 - count) 공식을 활용하여 조건문 없이 순위를 계산했다.
- continue와 break를 사용하여 불필요한 반복을 줄여 가독성과 효율성을 높였다.
728x90
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
| 프로그래머스 완주하지 못한 선수 JAVA 풀이 (HashMap, 해시) (0) | 2026.07.01 |
|---|---|
| 프로그래머스 분수의 덧셈 JAVA 풀이 (수학, 구현, 유클리드 호제법) (0) | 2026.06.30 |
| 프로그래머스 동영상 재생기 JAVA 풀이 (구현, 시뮬레이션) (0) | 2026.06.28 |
| 프로그래머스 햄버거 만들기 JAVA 풀이 (스택, 구현) (0) | 2026.06.27 |
| 프로그래머스 대충 만든 자판 JAVA 풀이 (HashMap, 구현) (0) | 2026.06.26 |