Problem solving/Algorithms
Mock Test Answers (모의고사)
Young_A
2020. 8. 26. 09:55
Question
There are three students who give up on studying mathematics because it is too hard. They will guess all of the answers to the questions for the exam of mathematic. Each of them will guess the answers with specific patterns. When the array includes the correct answers from the first question to the last question is given, write the code who get the highest result. The code will return an array include the students' number(s).
The patterns for guessing
- Student 1: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
- Student 2: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
- Student 3: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
Limitation
- The number of questions cannot over 10,000.
- The answers can be one of 1, 2, 3, 4, and 5.
- If there are two or three students who got the same highest result, return the value in the order of ascending.
Example of I/O
answers | return | explanation |
[1, 2, 3, 4, 5] | [1] | Only student 1 guessed all correctly. |
[1, 3, 2, 4, 2] | [1, 2, 3] | Each student guessed two questions correctly. |
My solution
def solution(answers):
answer = []
student1 = [1, 2, 3, 4, 5]
student2 = [2, 1, 2, 3, 2, 4, 2, 5]
student3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
point1 = 0
point2 = 0
point3 = 0
for index in range(len(answers)):
if answers[index] == student1[index % len(student1)]:
point1 += 1
if answers[index] == student2[index % len(student2)]:
point2 += 1
if answers[index] == student3[index % len(student3)]:
point3 += 1
highest_point = max(point1, point2, point3)
if highest_point == point1:
answer.append(1)
if highest_point == point2:
answer.append(2)
if highest_point == point3:
answer.append(3)
return answer
References
코딩테스트 연습 - 모의고사
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 ��
programmers.co.kr