728x90
반응형
문제 설명 :
로또 번호가 일부 훼손되어 알 수 없는 수가 0으로 표기되고,
내가 찍은 번호와 당첨 번호가 주어질 때, 알 수 없는 수가 다 맞을 경우, 다 맞추지 못할 경우에 대비해
최고, 최저 순위를 리턴하는 문제.
300x250
일단 이 문제를 보고 정렬이 되어있지 않다고 해서 정렬을 해야겠다고 생각했고, (빠른 탐색을 위해)
0의 갯수를 찾아놓고 맞춘 개수 + 0의 개수는 최대한 많이 맞출 수 있는 최고 순위일 것이다.
최저 순위는 단순히 맞춘 갯수만 카운트하면 된다.
👨🏻💻 나의 풀이
import java.util.*;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
Arrays.sort(lottos);
Arrays.sort(win_nums);
int zero =(int) Arrays.stream(lottos).filter(i-> i==0).count();
int count =0;
for(int i =0; i<lottos.length; i++){
for(int j =0; j<win_nums.length;j++){
if(lottos[i]==win_nums[j]){
count++;
continue;
}
}
}
return new int[]{getRank(count+zero),getRank(count)};
}
public static int getRank(int correct){
switch(correct){
case 6:
return 1;
case 5:
return 2;
case 4:
return 3;
case 3:
return 4;
case 2:
return 5;
default:
return 6;
}
}
}
일단 배열 내에서 0의 갯수를 찾아야 하기 때문에 스트림을 사용했고,
반복문을 돌면서 맞춘 갯수를 카운트하고 최고 순위가 0번째 인덱스 최저 순위가 1번째 인덱스로 리턴한다.
이 문제를 보고 Stream API를 공부하기를 정말 잘 했다는 생각이 든다.
아직 못봤다면 여기를 클릭해서 보러 가자.
맞춘 개수로 랭크를 리턴하는 함수는 메서드를 따로 만들어서 switch case로 맞춘 갯수로 등수를 리턴하게 했다.
728x90
728x90
'알고리즘' 카테고리의 다른 글
LeetCode Valid Anagram (0) | 2023.07.28 |
---|---|
프로그래머스,java]Level2 기능개발 (0) | 2022.02.19 |
프로그래머스]두 개 뽑아서 더하기 (0) | 2022.01.31 |
알고리즘] 1부터 n까지의 소수 갯수 찾기 및 출력 (0) | 2021.11.29 |
문자열 압축 [java] (0) | 2021.10.24 |
댓글