https://school.programmers.co.kr/learn/courses/30/lessons/42840
전형적인 완전탐색 문제이다. 각 수포자의 패턴을 시험 문제 길이에 맞게 반복하고, 주어진 정답과 비교하여 맞힌 문제 수를 계산한 후, 가장 많이 맞힌 문제 수를 찾아내고, 그 점수를 가진 수포자들을 배열에 담아 반환하면 된다.
def solution(answers):
# 수포자들의 답안 패턴
supo_1 = [1, 2, 3, 4, 5]
supo_2 = [2, 1, 2, 3, 2, 4, 2, 5]
supo_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
# 각 수포자가 맞힌 문제 수를 저장하는 리스트
scores = [0, 0, 0]
# 정답과 수포자들의 답안 비교
for i in range(len(answers)):
if answers[i] == supo_1[i % len(supo_1)]:
scores[0] += 1
if answers[i] == supo_2[i % len(supo_2)]:
scores[1] += 1
if answers[i] == supo_3[i % len(supo_3)]:
scores[2] += 1
# 가장 높은 점수를 가진 수포자 찾기
max_score = max(scores)
result = [i + 1 for i in range(3) if scores[i] == max_score]
return result
i % len(supo_1) 부분을 이해해보자.
0 % len(supo_1) = 0
1 % len(supo_1) = 1
2 % len(supo_1) = 2
3 % len(supo_1) = 3
4 % len(supo_1) = 4
5 % len(supo_1) = 0
6 % len(supo_1) = 1
7 % len(supo_1) = 2
.
.
.
(반복)
위와 같이 나머지 연산을 이용하면, 한정된 수포자의 답안 패턴(supo_1)을 가지고 전체 답안과 비교할 수 있다.
'Algorithm > 코딩테스트 고득점 Kit' 카테고리의 다른 글
[고득점 Kit / 완전탐색] 소수찾기 (0) | 2024.09.15 |
---|---|
[고득점 Kit / 완전탐색] 최소직사각형 (2) | 2024.09.15 |
[고득점 Kit / 정렬] H-Index (0) | 2024.09.11 |
[고득점 Kit / 정렬] 가장 큰 수 (0) | 2024.09.09 |
[고득점 Kit / 정렬] K번째수 (0) | 2024.09.09 |