[Python][프로그래머스] 모의고사 - 파이썬 풀이
출처
https://school.programmers.co.kr/learn/courses/30/lessons/42840
완전 탐색 알고리즘을 이용하여 풀이하는 문제로 규칙을 잘 정리하고 처음부터 끝까지 하나하나 대입하며 풀이하면 된다.
소스코드
def solution(answers):
answer = []
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]
ac, bc, cc = 0, 0, 0
for i in range(len(answers)):
if answers[i] == a[i % len(a)]:
ac += 1
if answers[i] == b[i % len(b)]:
bc += 1
if answers[i] == c[i % len(c)]:
cc += 1
max_num = max(ac, bc, cc)
if ac == max_num:
answer.append(1)
if bc == max_num:
answer.append(2)
if cc == max_num:
answer.append(3)
return answer
풀이
- 각 수포자들이 답을 찍는 규칙을 찾아 최대한 간결하게 정리해준다.
- 각 수포자들이 몇 개 맞았는지 저장할 변수를 선언한다.
- answers 리스트를 처음부터 끝까지 지나며 수포자들이 찍은 번호와 정답 index를 비교하여 맞았다면 + 1 해준다.
- 만약 i가 수포자들의 규칙을 넘는다면 나머지 개념을 사용하여 반복되게 코드를 작성하였다.
- 가장 큰 수(max_num)을 구분한다.
- 순서대로 조건문을 거쳐 가장 큰 수라면 각 수포자들의 번호를 answer에 append 한다.
이후 answer를 return 하면 풀이는 끝입니다.
풀이 결과
'알고리즘' 카테고리의 다른 글
백준-BOJ 14501번 퇴사 파이썬 풀이 (0) | 2022.07.28 |
---|---|
백준-BOJ 1920번 수 찾기 파이썬 풀이 (0) | 2022.07.26 |
[프로그래머스][Python] - 신고 결과 받기 풀이 (0) | 2022.06.04 |
백준 11057번 오르막 수 파이썬 풀이 (0) | 2022.04.24 |
백준 14490번 백대열 파이썬 풀이 (0) | 2022.04.21 |