문제
문제 설명
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.
1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5,...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5,...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5,...
1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요.
입력 & 출력
입출력 예
answersreturn
[1,2,3,4,5] | [1] |
[1,3,2,4,2] | [1,2,3] |
풀이 과정
1. 수포자의 패턴을 먼저 분석 3명의 참가자는 각각의 패턴이 있으며 이는 일정 길이의 배열로 생각할 수 있다.
2. 문제 숫자에 따라서 배열의 인덱스에 따라서 순회하면서 올바른 값을 찾는 방식으로 진행이 되겠지만 무한으로 순회를 하는 방법을 생각해야 한다. 각 배열을 원형 큐에 넣는다고 생각하고 인덱스 숫자를 사용해도 되겠지만 배열의 길이를 이용해서 몇 번째 숫자를 원하는지를 사용하여서 배열을 순회하게 만들었다.
3. 전체 숫자를 탐색하는 방식과 이를 조건문 분기하는 방식이 많겠지만 단순히 모든 경우를 작성하여서 각 경우에 나와야 하는 답변을 조건문 분기로 다 적어주었다.
코드
def solution(answers):
answer = []
cnt_one = 0
cnt_two = 0
cnt_three = 0
one = [1, 2, 3, 4, 5]
two = [2, 1, 2, 3, 2, 4, 2, 5]
three = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
for i, ans in enumerate(answers):
if ans == one[i % len(one)]:
cnt_one += 1
if ans == two[i % len(two)]:
cnt_two += 1
if ans == three[i % len(three)]:
cnt_three += 1
answer.append(cnt_one)
answer.append(cnt_two)
answer.append(cnt_three)
set(answer)
max(answer)
if cnt_one == cnt_two and cnt_two == cnt_three and cnt_one == cnt_three:
answer = [1, 2, 3]
elif cnt_one == cnt_two and cnt_two > cnt_three:
answer = [1, 2]
elif cnt_two == cnt_three and cnt_three > cnt_one:
answer = [2, 3]
elif cnt_one == cnt_three and cnt_one > cnt_two:
answer = [1, 3]
elif cnt_one == cnt_two and cnt_two < cnt_three:
answer = [3]
elif cnt_two == cnt_three and cnt_three < cnt_one:
answer = [1]
elif cnt_one == cnt_three and cnt_one < cnt_two:
answer = [2]
elif cnt_one > cnt_three and cnt_one > cnt_two:
answer = [1]
elif cnt_two > cnt_three and cnt_two > cnt_one:
answer = [2]
elif cnt_three > cnt_one and cnt_three > cnt_two:
answer = [3]
return answer
'Algorithm' 카테고리의 다른 글
[프로그래머스] 코딩테스트 연습연습문제 가운데 글자 가져오기 (0) | 2022.07.23 |
---|---|
[프로그래머스] 코딩테스트 연습위클리 챌린지 부족한 금액 계산하기 (0) | 2022.07.22 |
[프로그래머스] 코딩테스트 연습해시 폰켓몬 (0) | 2022.07.19 |
[프로그래머스] 코딩테스트 연습스택/큐프린터 (0) | 2022.07.18 |
[프로그래머스] 코딩테스트 연습2019 카카오 개발자 겨울 인턴십 크레인 인형뽑기 게임 (0) | 2022.07.17 |