본 게시물은 프로그래머스의 연습 문제 풀이입니다. 저작권은 (주) 그랩에게 있습니다
파이썬 코드
# 모의고사
def solution(answers):
# 가장 많은 문제를 맞힌 사람을 나타내는 리스트
answer = []
# 수포자 1
supo_1 = [1, 2, 3, 4, 5]
# 수포자 2
supo_2 = [2, 1, 2, 3, 2, 4, 2, 5]
# 수포자 3
supo_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
# 각 수포자가 맞은 수를 기록하는 배열
cnt = [0, 0, 0]
# 입력받은 답안을 토대로 각 수포자가 얼마나 맞았는지 탐색
for i in range(len(answers)):
# 수포자 1은 5를 주기로 반복
if answers[i] == supo_1[i % 5]:
cnt[0] += 1
# 수포자 2는 8을 주기로 반복
if answers[i] == supo_2[i % 8]:
cnt[1] += 1
# 수포자 3은 10을 주기로 반복
if answers[i] == supo_3[i % 10]:
cnt[2] += 1
# 가장 많이 맞춘 수
max_cnt = max(cnt)
# 가장 많이 맞춘 사람을 배열에 담기
for i in range(3):
# 가장 많이 맞춘 수와 같은 cnt 요소의 인덱스를 +1 하여 answer에 담기
if max_cnt == cnt[i]:
answer.append(i + 1)
return answer
print(solution([1, 3, 2, 4, 2, 2, 3, 1, 4, 5, 2, 3, 4]))
Comment
각 수포자가 답을 쓰는 규칙을 리스트로 만들고 수포자들의 정답수를 기록하는 별도의 리스트를 만들었다. 그 이후는 주어진 답안을 하나 하나 접근하며 수포자가 쓰는 규칙과 비교하여 같으면 카운트를 하는 방식으로 탐색을 하였다. 이 때, 인덱스 범위를 초과하지 않고 적절한 순서의 수포자의 규칙을 접근하기 위해서 모듈러 연산을 사용하였다.
Reference
'programming study > Algorithm' 카테고리의 다른 글
[프로그래머스] K번째 수 - python 풀이 (0) | 2021.04.19 |
---|---|
[프로그래머스] 체육복 - python 풀이 (0) | 2021.04.19 |
[프로그래머스] 신규 아이디 추천 - python 풀이 (0) | 2021.04.18 |
[프로그래머스] 크레인 인형 뽑기 게임 - python 풀이 (0) | 2021.04.17 |
[인프런 - 김태원] 파이썬 알고리즘 문제풀이 (코딩테스트 대비) (31)(2021.2.24) (0) | 2021.02.24 |