프로그래머스 (모든문제-해시) - 로또의 최고 순위와 최저 순위
해당 문제는 Set에 로또 집합을 넣어둔 뒤, 입력 받은 로또 번호를 기준으로 맞춘 갯수와 알아볼 수 없는 갯수를 구한뒤 최고로 많이 맞춘 것은 맞춘 갯수 + 알아볼수 없는 갯수, 최저 순위는 맞춘것만 맞았을 경우 2가지 경우 이라는 것을 알 수 있습니다.
당첨 순위는 7 - 맞춘 갯수, 로 구할 수 있는데 0개 맞춘 경우는 1개 맞춘 것과 마찬가지 이므로 최소 1개 맞춘것으로 계산을 하면 쉽게 문제를 풀 수 있습니다.
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
Set<Integer> winNumsSet = new HashSet<>();
for (int winNum : win_nums) {
winNumsSet.add(winNum);
}
int correctCount = 0;
int unknownCount = 0;
for(int lotto : lottos) {
if (winNumsSet.contains(lotto)) {
correctCount++;
}
if (lotto == 0) {
unknownCount++;
}
}
answer[0] = 7 - Math.max((correctCount + unknownCount), 1);
answer[1] = 7 - Math.max(correctCount, 1);
return answer;
}
'정리 > 알고리즘' 카테고리의 다른 글
프로그래머스 - 숫자 문자열과 영단어 (0) | 2022.03.24 |
---|---|
프로그래머스 - 신규 아이디 추천 (0) | 2022.03.23 |
해시 - 신고결과받기 (0) | 2022.03.21 |
DFS - 단어변환 (0) | 2022.03.18 |
그래프 - 가장 먼 노드 (0) | 2022.03.17 |
댓글