Python/알고리즘

완전탐색 Level 1 모의고사 - python (프로그래머스)

구름용 2023. 5. 1. 03:17

https://school.programmers.co.kr/learn/courses/30/lessons/42840

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

소스코드

def solution(answers):
    
    p_1 = [1,2,3,4,5]
    p_2 = [2,1,2,3,2,4,2,5]
    p_3 = [3,3,1,1,2,2,4,4,5,5]
    
    correct_1 = 0
    correct_2 = 0
    correct_3 = 0
    
    for index, value in enumerate(answers):
        if value == p_1[index % len(p_1)]:
            correct_1 += 1
        if value == p_2[index % len(p_2)]:
            correct_2 += 1
        if value == p_3[index % len(p_3)]:
            correct_3 += 1
    
    tmp = [correct_1, correct_2, correct_3]
    answer =[]
    for index, value in enumerate(tmp):
        if value == max(tmp):
            answer.append(index+1)
    return answer

 

풀이

풀이는 다음과 같았다. 학생 1 ~ 3 까지 문제를 찍는 방법이 고정되어 있으므로 리스트로 표현하였다. 그리고 answers list를 enumerate를 사용하여 인덱스와 값의 형태로 반환받은 다음 학생들의 찍는 방법이 담겨져 있는 리스트의 값과 비교하였다. 인덱싱을 하는 과정에서 리스트를 순회할 수 있도록 하기 위해 모듈러 연산을 해주었다.

 

다른 사람의 풀이

다른 사람의 경우에도 나의 아이디어와 동일하였다. 다만 나는 학생 1 ~ 3의 점수를 각각의 변수로 표현하였지만 리스트의 값으로 표현하는 것이 더 깔끔해 보였다.