본문 바로가기

취준/프로그래머스

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

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

 

코딩테스트 연습 - 모의고사 | 프로그래머스

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 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,

programmers.co.kr

나는 완전탐색 문제가 어렵다. 모든 완전탐색 문제가 어렵다. 그래서 쉬운 것부터 풀며 근자감을 키우고 도전했다 깨질 HP를 회복하고자 쉬운

문제를 풀어보려 한다.

 

이 문제는 말그대로 문제에 충실하게 노가자 코드를 짤 수 있냐를 물어본다. 

나 같은 경우에는 반복되는 순열을 하드코딩했는데 확장성을 바로 씹어먹어 버린 쓰레기가 탄생했다.

  1. 각각의 반복되는 순열을 하드코딩한다.
  2. answer를 돌며 반복되는 순열과 같은 사람의 점수를 1씩 올린다.
  3. 가장 점수가 높은 사람을 답으로 반환하되, 그중에 중복이 있으면 같이 반환한다.

 

def solution(answers):
    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]
    answerman = [0,0,0]
    for i in range(len(answers)):
        if answers[i] == one[i%5]:
            answerman[0]+=1
        if answers[i] == two[i%8]:
            answerman[1]+=1
        if answers[i] == three[i%10]:
            answerman[2]+=1
    
    print(answerman)
    maxman = max(answerman)
    answer = [i+1 for i in range(3) if answerman[i]==maxman]
    return answer