-
9. 모의고사Programmers 2023. 6. 15. 15:32728x90
문제 설명
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 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, ...1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.
제한 조건- 시험은 최대 10,000 문제로 구성되어있습니다.
- 문제의 정답은 1, 2, 3, 4, 5중 하나입니다.
- 가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬해주세요.
def solution(answers): answer = [0,0,0] p1 = [1,2,3,4,5] p2 = [2,1,2,3,2,4,2,5] p3 = [3,3,1,1,2,2,4,4,5,5] for i in range(len(answers)): # 1의 패턴 채점 결과 if answers[i] == p1[i%len(p1)]: answer[0] += 1 # 2의 패턴 채점 결과 if answers[i] == p2[i%len(p2)]: answer[1] += 1 # 3의 패턴 채점 결과 if answers[i] == p3[i%len(p3)]: answer[2] += 1 return [i + 1 for i in range(3) if answer[i] == max(answer)]
나눗셈 연산을 활용한 인덱싱을 통해 IndexError가 나지 않게끔 구현하였고, 마지막 return 문에는 편의상 3을 썼지만 더 효율적으로 코드를 작성하려면 for i in range(len(answer)) 가 들어가면 된다.
728x90'Programmers' 카테고리의 다른 글
11. JadenCase 문자열 만들기 (0) 2023.06.16 10. 소수 찾기 (0) 2023.06.15 8. 문자열 내 마음대로 정렬하기 (0) 2023.06.15 7. 숫자 문자열과 영단어 (0) 2023.06.14 6.예산 (0) 2023.06.14