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

지애·2024년 6월 26일
0

코딩테스트

목록 보기
8/12

point
반복되는 부분을 찾아내어 간결화 시키자

생각의 흐름

  • 문제 특성 상 하나 하나 모두 채점하는 수 밖에는 없을 것이라고 생각.
  • 대신 반복되는 부분을 찾아서 최대한 간결하게 표현하고자 했다.
  • 좌표 이동 코드를 작성할 때 이동하는 위치를 미리 list에 저장해두고 꺼내쓰는 방식을 주로 사용하는데, 이 방식에서 아이디어를 얻었다.

풀이

# 1 2 3 4 5 반복
# 2 1 2 3 2 4 2 5 (1,3,4,5 사이에 2 끼워 넣음)
# 33 11 22 44 55 반복
def solution(answers):
    s = [[1, 2, 3, 4, 5],
         [2, 1, 2, 3, 2, 4, 2, 5],
         [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]]
    
    scores = [0, 0, 0]
    
    for i, a in enumerate(answers):
        for j in range(len(s)):
            if a == s[j][i%len(s[j])]:
                scores[j] += 1
                
    max_score = max(scores)
    answer = [i+1 for i in range(len(scores)) if scores[i] == max_score]
    return answer
profile
차근차근

0개의 댓글