✔ 로또의 최고 순위와 최저 순위
문제 분석하기
당첨 번호를 맞춘 개수와 0의 개수를 찾은 후
최고 순위는 당첨 번호를 맞춘 개수 + 0의 개수, 최저 순위는 당첨 번호를 맞춘 개수로 하여 순위를 반환하도록 함
손으로 풀어보기
- 구매한 로또 번호를 돌면서 당첨 번호에 일치하는 번호가 있는지 개수 카운트
- 0의 회수를 세어 최고 순위와 최저 순위 반환
슈도코드 작성하기
lottos(구매한 로또 번호를 담은 배열)
win_nums(당첨 번호를 담은 배열)
answer(일치하는 번호 갯수 / 당첨 가능한 최고 순위와 최저 순위)
rank(순위에 따른 당첨 개수를 담은 배열 : 0개 일치 - 6등, 1개 일치 - 6등, 2개 일치 - 5등, 3개 일치 - 4등, 4개 일치 - 3등, 5개 일치 - 2등, 6개 일치 - 1등)
for(i -> lottos의 길이만큼) {
if(구매한 로또 번호가 0이라면) {
answer[0] 증가
continue
}
for(j -> win_nums의 길이만큼) {
if(구매한 로또 번호와 당첨 번호가 일치한다면) {
answer[0] 증가
answer[1] 증가
}
}
}
answer[0] = rank[answer[0]]
answer[1] = rank[answer[1]]
answer 반환
코드 구현하기
/**
* 77484) 로또의_최고_순위와_최저_순위
*/
public class L048_77484 {
// lottos(구매한 로또 번호를 담은 배열)
// win_nums(당첨 번호를 담은 배열)
public int[] solution(int[] lottos, int[] win_nums) {
// answer(일치하는 번호 갯수 / 당첨 가능한 최고 순위와 최저 순위)
int[] answer = new int[2];
// rank(순위에 따른 당첨 개수를 담은 배열)
/*
* 0개 일치 - 6등,
* 1개 일치 - 6등,
* 2개 일치 - 5등,
* 3개 일치 - 4등,
* 4개 일치 - 3등,
* 5개 일치 - 2등,
* 6개 일치 - 1등
*/
int[] rank = { 6, 6, 5, 4, 3, 2, 1 };
for (int i = 0; i < lottos.length; i++) {
// 구매한 로또 번호가 0이라면
if (lottos[i] == 0) {
answer[0]++;
continue;
}
for (int j = 0; j < win_nums.length; j++) {
// 구매한 로또 번호와 당첨 번호가 일치한다면
if (lottos[i] == win_nums[j]) {
answer[0]++;
answer[1]++;
}
}
}
// 일치하는 번호 개수에 따라 순위로 변환
answer[0] = rank[answer[0]];
answer[1] = rank[answer[1]];
return answer;
}
// 테스트 케이스
public static void main(String[] args) {
L048_77484 solution = new L048_77484();
int[] lottos = { 44, 1, 0, 0, 31, 25 };
int[] win_nums = { 31, 10, 45, 1, 6, 19 };
int[] result = solution.solution(lottos, win_nums);
System.out.println(Arrays.toString(result));
}
}
'Coding Test > Java 알고리즘 실전' 카테고리의 다른 글
[12903] 가운데 글자 가져오기 (0) | 2023.12.25 |
---|---|
[12901] 2016년 (0) | 2023.12.25 |
[77884] 약수의 개수와 덧셈 (0) | 2023.12.19 |
[81301] 숫자 문자열과 영단어 (0) | 2023.12.19 |
[82612] 부족한 금액 계산하기 (0) | 2023.12.18 |