728x90
풀이
def solution(answers):
answer = []
s1 = [1, 2, 3, 4, 5]
s2 = [2, 1, 2, 3, 2, 4, 2, 5]
s3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
d = dict.fromkeys([1, 2, 3], 0)
for i in range(len(answers)):
if answers[i] == s1[i % len(s1)]:
d[1] += 1
if answers[i] == s2[i % len(s2)]:
d[2] += 1
if answers[i] == s3[i % len(s3)]:
d[3] += 1
sorted_list = sorted(d.items(), key = lambda x: (-x[1], x[0]))
for i in sorted_list:
if i[1] == sorted_list[0][1]:
answer.append(i[0])
else:
break
return answer
내 풀이
- 학생 1, 2, 3은 각각의 규칙대로 번호를 찍기 때문에 순환 큐 형식으로 반복문을 돌면서 ( %len(학생) ) 답과 맞는지 확인한다. 학생 별 정답 수는 딕셔너리를 만들어서 저장했다.
- 반복문을 다 돌고 나서 {학생 : 맞힌 정답 수} 로 저장되어 있는 딕셔너리를 정답수는 내림차순으로, 학생은 오름차순으로 정렬하여 sorted_list에 저장한다.
- sorted_list 전체 반복문을 돌면서 맨 처음 요소(가장 많은 정답수)와 맞힌 정답수가 같으면 계속 그 학생은 answer에 추가해주고, 아니라면 거기서 반복문을 멈춘다.(그 아래로는 정답수가 낮은 애들뿐이므로)
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 코딩테스트 고득점 Kit / 완전탐색] 소수찾기 (python) (0) | 2024.01.23 |
---|---|
[프로그래머스 코딩테스트 고득점 Kit / 완전탐색] 카펫 (python) (0) | 2024.01.22 |
[프로그래머스 코딩테스트 고득점 Kit / 완전탐색] 최소직사각형 (python) (0) | 2024.01.17 |
[프로그래머스 코딩테스트 고득점 Kit / 해시] 베스트 앨범 (python) (0) | 2024.01.15 |
[프로그래머스 코딩테스트 고득점 Kit / 해시] 의상 (python) (0) | 2024.01.13 |