알고리즘/문제풀이
완전 탐색 알고리즘 #프로그래머스 #모의고사 | 파이썬 구현
DATA101
2021. 8. 27. 01:35
728x90
반응형
📚 문제
문제 원본: https://programmers.co.kr/learn/courses/30/lessons/42840?language=python3
코딩테스트 연습 - 모의고사
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는
programmers.co.kr
🤔 접근법
⚙️ 핵심 자료구조: 완전 탐색
문제해결 전략의 핵심은 수포자별 '찍기 패턴'을 고려해 문제별 찍은 번호를 유추해 내는 것입니다.
본 문제에서 1번 수포자는 5개씩 한 패턴으로 정답을 찍고, 2번 수포자는 8개씩, 3번 수포자는 10개씩 찍는다는 것을 알 수 있습니다.
따라서 수포자별 정답 찍는 패턴을 리스트를 활용해 정의할 수 있습니다.
정답을 확인할 문제 번호만큼을 '찍기 패턴'을 구성하는 숫자 개수로 나누어 줍시다.
이렇게 얻은 나머지로 수포자별 '찍기 패턴' 리스트를 인덱싱하면 해당 수포자가 찍은 정답을 알 수 있습니다.
문제에서 정답을 많이 맞춘 수포자 번호를 출력해야 하며 공동 1위가 있다면 모두 출력해야 하기 때문에,
최다 정답 개수만큼을 맞춘 모든 수포자 번호를 정답으로 출력해 줍니다.
💻 My solution
def solution(answers):
answer = []
ans_1 = [1, 2, 3, 4, 5]
ans_2 = [2, 1, 2, 3, 2, 4, 2, 5]
ans_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
score = [0, 0, 0]
for i in range(len(answers)):
if answers[i] == ans_1[i%5]:
score[0] +=1
if answers[i] == ans_2[i%8]:
score[1] +=1
if answers[i] == ans_3[i%10]:
score[2] +=1
for i in range(3):
if score[i] == max(score):
answer.append(i+1)
return answer
아낌없는 피드백 & 질문 환영합니다 :)
아래에 👇👇👇 댓글 남겨주세요!
그럼 오늘도 즐거운 하루 보내시길 바랍니다.
고맙습니다.
728x90
반응형