Algorithm/Problems

99클럽 코테 스터디 20일차 TIL + 완전탐색

공부좀하시졍 2024. 11. 17. 01:05

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

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

def solution(answers):
    a = [1,2,3,4,5]
    b = [2,1,2,3,2,4,2,5]
    c = [3,3,1,1,2,2,4,4,5,5]
    score = [0,0,0]
    for i, answer in enumerate(answers):
        if answer == a[i%len(a)]:
            score[0] += 1
        if answer == b[i%len(b)]:
            score[1] += 1
        if answer == c[i%len(c)]:
            score[2] += 1
    
    result = []
    for i, s in enumerate(score):
        if s == max(score):
            result.append(i+1)
    return result
  • 1번, 2번, 3번 수포자가 찍는 답안의 규칙을 담은 리스트 3개를 선언하고 각 수포자의 점수를 계산하는 리스트를 선언한다.
  • 주어진 answers 리스트를 enumerate 함수를 이용해 idx와 idx 값을 이용해 주어진 답과 나머지연산(%)으로 각 수포자의 찍는 답을 비교하며 점수를 계산한다.
    • enumerate 함수는 순서가 있는 자료형 (list, set,dictionary, string, tuple)을 입력으로 받았을 떄 인덱스와 값을 함께 리턴해준다.
  • score 리스트의 max값과 비교하여 같은 값을 가진 idx + 1을 result 리스트에 넣어 return 해준다.
  • score를 구할 때 elif를 사용하면 같은 답을 찍었을 때 위 조건문에 걸리면 아래 조건문을 타지 않기 때문에 if문으로 작성해야한다!!!