프로그래머스(Programmers) 코딩테스트 연습
Level1 완전탐색 모의고사 파이썬(Python) 풀이
문제풀이
반복문의 횟수를 줄이는 것이 핵심인 문제인 것 같다. 반복문의 횟수를 줄이기 위해 접근하는 index를 학생들의 정답 패턴의 길이로 나누는 아이디어를 채택하였다.
- 정답의 길이로 반복문을 돌린다.
- 학생 a,b,c의 정답 패턴의 길이로 현재 반복문의 index를 나누어 각 학생의 정답 패턴에 접근한다.
- 정답이 각각 일치하면, answer_list의 a->0, b->1, c->2 인덱스에 맞게 +1을 해준다.
- answer_list를 enumerate를 사용하여 인덱스와 밸류값으로 함께 반복문을 돌린다.
- answer_list의 max값을 찾아 해당 max값과 밸류값이 같은 인덱스값을 answer배열에 저장한다.
- return answer
코드
def solution(answers):
answer = []
answer_list = [0,0,0]
a = [1, 2, 3, 4, 5]
b = [2, 1, 2, 3, 2, 4, 2, 5]
c = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
for i in range(len(answers)):
if a[i%len(a)]==answers[i]:
answer_list[0]+=1
if b[i%len(b)]==answers[i]:
answer_list[1]+=1
if c[i%len(c)]==answers[i]:
answer_list[2]+=1
for i,val in enumerate(answer_list):
if val == max(answer_list):
answer.append(i+1)
return answer
if __name__ == "__main__":
answers = [5, 5, 4, 2, 3]
print(solution(answers))
댓글남기기