슬기로운 연구생활

[프로그래머스] 모의고사 본문

슬기로운 코테 생활

[프로그래머스] 모의고사

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

 

Comments