728x90
문제
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.
1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5,
문제의 정답이 입력되었을 때 가장 많이 맞힌 수포자의 번호를 출력한다.
동점자가 있으면 오름차순으로 정렬하고 문제의 수는 최대 10000개이다.
입력
[1,2,3,4,5]
출력
[1]
1. 수포자들이 찍는 방식을 보면 일정한 규칙이 있다. 1번은 5개, 2번 8개 3번 10개의 수가 반복적으로 입력된다.
2. 따라서 입력되는 answers를 for문을 돌려 같은 인덱스에 해당하는 정수끼리 비교한다.
3. 이때 1번은 인덱스%5, 2번은 인덱스%8, 3번은 인덱스%10으로 하여 반복적으로 비교하도록 한다.
4. 정답일 경우 answer에 각 번호에 해당하는 자리의 수를 증가시킨다.
5. 정답을 다 맞춰봤으면 최대 정답 수를 출력하여 max_num에 저장한다.
6. max_num과 answer에 있는 수를 비교하여 같을 때 result에 추가한다.
7. 작은 수부터 비교하므로 마지막에 정렬은 해주지 않아도 된다.
python
def solution(answers):
answer = [0,0,0]
result=[]
one=[1, 2, 3, 4, 5]
two=[2, 1, 2, 3, 2, 4, 2, 5]
three=[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
for idx in range(len(answers)):
if answers[idx]==one[idx%5]:
answer[0]+=1
if answers[idx]==two[idx%8]:
answer[1]+=1
if answers[idx]==three[idx%10]:
answer[2]+=1
max_num=max(answer)
for idx in range(3):
if answer[idx]==max_num:
result.append(idx+1)
return result
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
[Level1] 정수 내림차순으로 배치하기 (0) | 2021.01.22 |
---|---|
[Level1] K번째수 (0) | 2021.01.22 |
[Level1] 완주하지 못한 선수 (0) | 2021.01.22 |
[Level1] 같은 숫자는 싫어 (0) | 2021.01.21 |
[Level1] 나누어 떨어지는 숫자배열 (0) | 2021.01.21 |