[문제]
https://programmers.co.kr/learn/courses/30/lessons/42840
코딩테스트 연습 - 모의고사
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는
programmers.co.kr
[풀이]
이 문제는 enumerate만 알면 쉽게 풀 수 있는 문제이다.
enumerate
- 반복문 사용 시 몇 번째 반복문인지 확인할 수 있다
- 인덱스 번호와 컬렉션의 원소를 tuple형태로 반환
또, 시험은 최대 10,000 문제로 구성되어 있기 때문에 각 학생이 찍는 패턴을 반복하기 위해 % (나머지) 를 사용한다. 1번 학생의 0번 답이 맞았는지 구하기 위해서는 1번 학생이 찍는 리스트의 (0 % 5) 인덱스 값을 확인해야 한다. 1번 학생의 6번 문제의 답은 (6 % 5), 즉 1번 인덱스값인 '2'로 찍는다.
이를 일반화하면 one[i % len(one)]
이 i번 문제에 대한 1번 학생의 답이 된다.
[코드]
def solution(answers):
scores = [0, 0, 0]
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 i, answer in enumerate(answers):
if answer == one[i % len(one)]:
scores[0] += 1
if answer == two[i % len(two)]:
scores[1] += 1
if answer == three[i % len(three)]:
scores[2] += 1
answer = []
max_score = max(scores)
for i, score in enumerate(scores):
if score == max_score:
answer.append(i+1)
return answer
'문제풀이 > Programmers' 카테고리의 다른 글
[프로그래머스][Lv1][Python] 문자열 내 마음대로 정렬하기 (0) | 2022.02.17 |
---|---|
[프로그래머스][Lv1][Python] 하샤드 수 (0) | 2022.02.17 |
[프로그래머스][Lv1][Python] 최소직사각형 (0) | 2022.02.11 |
[프로그래머스][Lv1][Python] k번째 수 (0) | 2022.02.10 |
[프로그래머스][Lv1][Python] 예산 (0) | 2022.02.10 |