슬기로운 코테 생활
[프로그래머스] 모의고사
vhrehfdl
2020. 10. 20. 11:36
* 문제
programmers.co.kr/learn/courses/30/lessons/42840
코딩테스트 연습 - 모의고사
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 ��
programmers.co.kr
* 문제 풀이
- 첫째, 1번 수포자의 패턴을 미리 정의한 후, answers를 비교해 정답 개수를 추출합니다.
- 둘째, 2번 수포자의 패턴을 미리 정의한 후, answers를 비교해 정답 개수를 추출합니다.
- 셋째, 3번 수포자의 패턴을 미리 정의한 후, answers를 비교해 정답 개수를 추출합니다.
- 넷째, list를 이용해 최대값을 가지는 수포자를 찾아내 출력합니다.
- 다섯째, 정답 개수가 같은 경우 예외처리를 합니다.
* 생각
- 예외처리하는 부분이 생각보다 까다로웠습니다.
1번, 2번 수포자가 같은 경우2번, 3번 수포자가 같은 경우1번, 3번 수포자가 같은 경우1번, 2번, 3번 수포자가 같은 경우이 부분을 잘 캐치해야 하는 것 같습니다.
* 코드
def solution(answers):
num1_answer = 0
num2_answer = 0
num3_answer = 0
num1_list = [1,2,3,4,5]
num2_list = [2,1,2,3,2,4,2,5]
num3_list = [3,3,1,1,2,2,4,4,5,5]
total_list = []
for i in range(0, len(answers)):
num1 = i % 5
if num1_list[num1] == answers[i]:
num1_answer += 1
num2 = i % 8
if num2_list[num2] == answers[i]:
num2_answer += 1
num3 = i % 10
if num3_list[num3] == answers[i]:
num3_answer += 1
total_list = [num1_answer, num2_answer, num3_answer]
result_list = [total_list.index(max(total_list)) + 1]
if (num1_answer == num2_answer) and (num1_answer == num3_answer) and num1_answer != 0 and num2_answer != 0 and num3_answer != 0:
result_list = [1,2,3]
elif (num1_answer == num2_answer) and (num1_answer != num3_answer) and num1_answer != 0:
result_list = [1,2]
elif (num1_answer != num2_answer) and (num2_answer == num3_answer) and num2_answer != 0:
result_list = [2,3]
elif (num1_answer == num3_answer) and (num2_answer != num3_answer) and num3_answer != 0:
result_list = [1,3]
return result_list