Algorithm
모의고사 / 프로그래머스
김예나
2025. 2. 28. 10:57
첫번째 시도
- 인덱스를 초기화하는 부분에서 문제 발생 -> 나머지 연산자로 해결
def solution(answers):
sol1 = [1, 2, 3, 4, 5]
sol2 = [2, 1, 2, 3, 2, 4, 2, 5]
sol3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
idx1 = 0
idx2 = 0
idx3 = 0
cnt = {1:0, 2:0, 3:0}
for i in answers:
if idx1 < len(sol1):
if i == sol1[idx1]:
cnt[1] = cnt[1] + 1
idx1 = idx1 + 1
else:
idx1 = idx1 + 1
else:
idx1 = 0
if idx2 < len(sol2):
if i == sol2[idx2]:
cnt[2] = cnt[2] + 1
idx2 = idx2 + 1
else:
idx2 = idx2 + 1
else:
idx2 = 0
if idx3 < len(sol3):
if i == sol3[idx3]:
cnt[3] = cnt[3] + 1
idx3 = idx3 + 1
else:
idx3 = idx3 + 1
else:
idx3 = 0
max_val = max(cnt.values())
ans = []
for i in cnt:
if cnt[i] == max_val:
ans.append(i)
ans.sort()
return ans
정답
- 나머지연산자로 인덱스 구현
def solution(answers):
sol1 = [1, 2, 3, 4, 5]
sol2 = [2, 1, 2, 3, 2, 4, 2, 5]
sol3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
idx1 = 0
idx2 = 0
idx3 = 0
cnt = {1:0, 2:0, 3:0}
for i in answers:
if i == sol1[idx1 % len(sol1)]:
cnt[1] = cnt[1] + 1
idx1 = idx1 + 1
if i == sol2[idx2 % len(sol2)]:
cnt[2] = cnt[2] + 1
idx2 = idx2 + 1
if i == sol3[idx3 % len(sol3)]:
cnt[3] = cnt[3] + 1
idx3 = idx3 + 1
max_val = max(cnt.values())
ans = []
for i in cnt:
if cnt[i] == max_val:
ans.append(i)
ans.sort()
return ans