
import java.util.HashSet;
import java.util.Set;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
Set<Integer> winSet = new HashSet<>(); //당첨 번호 저장
for(int num : win_nums){
winSet.add(num);
}
int zeroCount = 0; //0의 개수
int matchCount = 0; // 맞춘 개수
for (int num : lottos){
if( num ==0){ //lottos가 0이면 zeroCount++
zeroCount++;
} else if(winSet.contains(num)){
matchCount++; //0이 아니고 당첨번호에 포함되어 있다면 matchCount++
}
}
int maxRank= getRank(zeroCount + matchCount); // 최고순위는 0개수 + 맞은 개수
int minRank = getRank(matchCount); // 최저순위는 맞은 개수
return new int[]{maxRank, minRank}; //출력값은 최고순위, 최저순위
}
public int getRank(int count){
return count >=2 ? 7- count : 6; // 맞은 개수가 2개 이상이면 7 - count 이고 아니면 6 반환 조건문
}
}
초반에 이중 for문을 사용하여 0의 개수, 맞춘 개수를 파악하고 코드를 짜보려고했지만 쉽지않았다. 그래서 ChatGpt의 도움을 조금 받았다. 이중for문으로 사용을 하는것보다 Set, Hash를 이용하고, Rank메서드를 이용하여 코드를 완성시킬 수 있었다. 지금까지의 얕은 지식으로 모든 문제를 for문, if문을 사용하여 해결하려고 했었는데 이런 방법도 있다는 것을 알 수 있었고 다른 문제들을 풀 때도 조금 수월하게 풀 수 있을것 같다.
'프로그래머스 문제 풀이' 카테고리의 다른 글
| Lv1 - 음양더하기 (0) | 2025.02.19 |
|---|---|
| Lv1 - 숫자 문자열과 영단어 (0) | 2025.02.19 |
| Lv1 - 부족한 금액 계산하기 (0) | 2025.02.19 |
| Lv1 - 크기가 작은 부분 문자열 (0) | 2025.02.18 |
| Lv1 - 두 정수 사이의 합 (0) | 2025.02.15 |