코딩/프로그래머스
[프로그래머스 Level 1] 모의고사 / 완전탐색 / 파이썬
구름위의공룡
2020. 7. 5. 20:47
<문제>
<풀이>
def solution(answers):
solver = [0, 0, 0]
s1 = [1, 2, 3, 4, 5]
s2 = [2, 1, 2, 3, 2, 4, 2, 5]
s3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
for i in range(len(answers)):
if answers[i] == s1[i % len(s1)]:
solver[0] += 1
if answers[i] == s2[i % len(s2)]:
solver[1] += 1
if answers[i] == s3[i % len(s3)]:
solver[2] += 1
answer = []
for i in range(len(solver)):
if solver[i] == max(solver):
answer.append(i + 1)
return answer
코드 설명:
유형이 완전탐색인 이유는 정답이 들은 배열 answers의 모든 값들을 탐색해야하기 때문이다. 구조적인 문제보다는 문제 조건만 잘 생각하면 풀 수 있는 문제다. 각 수포자들이 답을 찍는 번호 패턴이 담긴 배열들을 만든 다음에 이를 answers 배열과 비교하는데, 번호 패턴이 계속 반복되므로 나머지 값 % 연산으로 index값을 정했다. k번째 수포자의 답과 정답지와 같으면 solver의 k-1번째 값을 1씩 올리고 이후 가장 큰 값이 몇번째에 있는지 찾는다.