본문 바로가기
문제 풀이/프로그래머스 (Programmers)

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

by 희조당 2022. 7. 5.
728x90

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

 

프로그래머스

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

programmers.co.kr


 문제 풀이

완전 탐색 문제이다.

 

수포자들의 패턴을 cases에, 각 수포자의 정답 수를 담는 score에 담아주었다.

모든 경우를 확인해야 하므로 반복문으로 쭉 돌려주었다.

만약 수포자 패턴을 벗어나려고할 때 idx를 0으로 돌려주어 다시 처음부터 확인하도록 하였다.

가장 많이 맞은 사람 값만 추가하면되고 오름차순 출력은 수포자가 순서대로 있어서 그대로 추가해주면 된다!

 느낀 점

idx를 0으로 바꿔주는 것보다 모둘려 연산을 사용하는 게 더 깔끔했을 것 같다.

자주 쓰는 것 같으면서 자주 안 쓰는 것 같다 ㅎㅎ.ㅎ.ㅎ.ㅎㅎㅎ

 코드

def solution(answers):
    answer, score = [], []
    cases = [
        [1, 2, 3, 4, 5], 
        [2, 1, 2, 3, 2, 4, 2, 5], 
        [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    ]
    
    for case in cases:
        cnt, idx = 0, 0
        for i in range(len(answers)):
            if answers[i] == case[idx]: cnt+=1
            if idx == len(case)-1 : idx = 0
            else: idx += 1
        score.append(cnt)
    
    for i in range(3):
        if score[i] == max(score):
            answer.append(i+1)
    
    return answer

댓글