코딩테스트 연습 문제
- programmers.co.kr
- 문제 많이 맞춘사람 맞추기
'''
1번 수포자는 1,2,3,4,5 반복
2번 수포자는 (2,1) (2,3) (2,4) (2,5) 반복
3번 수포자는 (3,3) (1,1) (2,2) (4,4) (5,5) 반복
'''
def makeAnswer(answer):
answer1 = []
answer2 = []
answer3 = []
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]
idx1 =0
idx2 = 0
idx3 =0
for a in range(len(answer)):
if idx1 > len(pattern1)-1:
idx1 = 0
answer1.append(pattern1[idx1])
idx1 +=1
for a in range(len(answer)):
if idx2 > len(pattern2)-1:
idx2 = 0
answer2.append(pattern2[idx2])
idx2 +=1
for a in range(len(answer)):
if idx3 > len(pattern3)-1:
idx3 = 0
answer3.append(pattern3[idx3])
idx3 +=1
return answer1, answer2, answer3
def check_answer(answer,a,b,c):
answer_count = [0,0,0]
for i, j in zip(answer, a):
if i == j:
answer_count[0] +=1
for i, j in zip(answer, b):
if i == j:
answer_count[1] +=1
for i, j in zip(answer, c):
if i == j:
answer_count[2] +=1
max_answer_count = max(answer_count)
cnt =1
result = []
for x in answer_count:
if x == max_answer_count:
result += [cnt]
cnt+=1
result.sort()
return result
def solution(answers):
a, b, c = makeAnswer(answers)
answer = check_answer(answers,a,b,c)
return answer
순환주기를 idx로 일일이 하나씩 초기화하면서 했는데 원형큐를 생각하긴했는데 적용을 안해버림.
그냥 각 주기별로 나눠주면 코드가 훨씬 간결해졌을텐데...
또, for문 돌때, range가 아닌, enumerate를 사용하는것도 이 문제에서는 좋은 해답이였음.
enumerate는 리스트의 index, value를 반환해줌.
반응형
'CodingTest > Level1' 카테고리의 다른 글
[연습] 코딩테스트-가운데 글자가져오기 (0) | 2020.01.15 |
---|---|
[연습] 코딩테스트-요일 맞추기 (0) | 2020.01.15 |
[연습]코딩테스트-k번째수 (0) | 2020.01.14 |
[연습]코딩테스트- 완주하지 못한 선수 (0) | 2020.01.09 |
[연습]KaKaO 2020 Coding Test 1번 문자열 압축 (0) | 2020.01.08 |