0%

[프로그래머스] 모의고사

프로그래머스 - 연습 문제

Code1 (Python)

  • answer의 길이가 순환주기의 길이와 같으면 순환주기를 더하는 방식으로 함
  • 이렇게 하니까 쓸데없이 길어지는 것 같았는데…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def solution(answers):
person1 = [1,2,3,4,5]
person2 = [2,1,2,3,2,4,2,5]
person3 = [3,3,1,1,2,2,4,4,5,5]

result = [0, 0, 0]
winner = []

for index, value in enumerate(answers):
if len(answers) > len(person1):
person1 += person1
if len(answers) > len(person2):
person2 += person2
if len(answers) > len(person3):
person3 += person3

if value == person1[index]:
result[0] += 1
if value == person2[index]:
result[1] += 1
if value == person3[index]:
result[2] += 1

for index, value in enumerate(result):
if value == max(result):
winner.append(index + 1)

return winner

Code2 (Python)

  • 이렇게 순환주기로 나눠주면 된다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def solution(answers):
pattern1 = [1,2,3,4,5]
pattern2 = [2,1,2,3,2,4,2,5]
pattern3 = [3,3,1,1,2,2,4,4,5,5]
score = [0, 0, 0]
result = []

for idx, answer in enumerate(answers):
if answer == pattern1[idx%len(pattern1)]:
score[0] += 1
if answer == pattern2[idx%len(pattern2)]:
score[1] += 1
if answer == pattern3[idx%len(pattern3)]:
score[2] += 1

for idx, s in enumerate(score):
if s == max(score):
result.append(idx+1)

return result