문제
https://programmers.co.kr/learn/courses/30/lessons/77484
풀이
기본 아이디어는 순회를 하면서 주어진 두 배열의 원소를 비교하는 간단한 문제였다. 문제의 제한사항 중 '중복된 원소가 없다'라는 조건이 있었는데, 이를 이용하면 간단하게 문제를 풀 수 있다.
코드
파이썬
def solution(lottos, win_nums):
answer = []
zero_cnt = 0
correct_cnt = 0
win_nums_set = set(win_nums)
for lotto in lottos:
if lotto == 0:
zero_cnt += 1
elif lotto in win_nums_set:
correct_cnt += 1
answer = [get_grade(correct_cnt + zero_cnt), get_grade(correct_cnt)]
return answer
def get_grade(cnt):
if cnt == 6:
return 1
elif cnt == 5:
return 2
elif cnt == 4:
return 3
elif cnt == 3:
return 4
elif cnt == 2:
return 5
else:
return 6
자바
import java.util.HashSet;
import java.util.Set;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
int zero_cnt = 0;
int correct_cnt = 0;
Set win_nums_set = new HashSet();
for (int win_num: win_nums) {
win_nums_set.add(win_num);
}
for (int lotto: lottos) {
System.out.println(lotto);
if (lotto == 0) {
zero_cnt++;
} else if (win_nums_set.contains((lotto))) {
correct_cnt++;
}
}
answer[0] = getGrade(zero_cnt + correct_cnt);
answer[1] = getGrade(correct_cnt);
return answer;
}
int getGrade(int cnt) {
if (cnt > 1) {
return 7-cnt;
} else {
return 6;
}
}
}
'CS > 알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스] 다단계 칫솔 판매 [Python(파이썬)] (0) | 2021.10.05 |
---|---|
[프로그래머스] 오픈채팅방 [Python(파이썬), Java(자바)] (0) | 2021.09.28 |
[백준] 1939 - 중량제한 [Python(파이썬)] (0) | 2021.07.19 |
[백준] 3020 - 개똥벌레 [Python(파이썬)] (0) | 2021.07.19 |
[백준] 18234 - 당근 훔쳐 먹기 [Python(파이썬)] (0) | 2021.07.19 |