πŸ—οΈ Algorithm/⬛ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

[Programmers] [Python] Level1_λͺ¨μ˜κ³ μ‚¬

Dbswnstjd 2022. 3. 8. 04:54

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

 

μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅ - λͺ¨μ˜κ³ μ‚¬

μˆ˜ν¬μžλŠ” μˆ˜ν•™μ„ ν¬κΈ°ν•œ μ‚¬λžŒμ˜ μ€€λ§μž…λ‹ˆλ‹€. 수포자 삼인방은 λͺ¨μ˜κ³ μ‚¬μ— μˆ˜ν•™ 문제λ₯Ό μ „λΆ€ 찍으렀 ν•©λ‹ˆλ‹€. μˆ˜ν¬μžλŠ” 1번 λ¬Έμ œλΆ€ν„° λ§ˆμ§€λ§‰ λ¬Έμ œκΉŒμ§€ λ‹€μŒκ³Ό 같이 μ°μŠ΅λ‹ˆλ‹€. 1번 μˆ˜ν¬μžκ°€ μ°λŠ”

programmers.co.kr

풀이

def solution(answers):
    # κ°€μž₯ λ§Žμ€ 문제λ₯Ό 맞힌 μ‚¬λžŒμ„ λ‚˜νƒ€λ‚΄λŠ” 리슀트
    answer = []
    # 수포자 1
    supo_1 = [1, 2, 3, 4, 5]
    # 수포자 2
    supo_2 = [2, 1, 2, 3, 2, 4, 2, 5]
    # 수포자 3
    supo_3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

    # 각 μˆ˜ν¬μžκ°€ λ§žμ€ 수λ₯Ό κΈ°λ‘ν•˜λŠ” λ°°μ—΄
    cnt = [0, 0, 0]

    # μž…λ ₯받은 λ‹΅μ•ˆμ„ ν† λŒ€λ‘œ 각 μˆ˜ν¬μžκ°€ μ–Όλ§ˆλ‚˜ λ§žμ•˜λŠ”μ§€ 탐색
    for i in range(len(answers)):
        # 수포자 1은 5λ₯Ό 주기둜 반볡
        if answers[i] == supo_1[i % 5]:
            cnt[0] += 1
        # 수포자 2λŠ” 8을 주기둜 반볡
        if answers[i] == supo_2[i % 8]:
            cnt[1] += 1
        # 수포자 3은 10을 주기둜 반볡
        if answers[i] == supo_3[i % 10]:
            cnt[2] += 1

    # κ°€μž₯ 많이 맞좘 수
    max_cnt = max(cnt)

    # κ°€μž₯ 많이 맞좘 μ‚¬λžŒμ„ 배열에 λ‹΄κΈ°
    for i in range(3):
        # κ°€μž₯ 많이 맞좘 μˆ˜μ™€ 같은 cnt μš”μ†Œμ˜ 인덱슀λ₯Ό +1 ν•˜μ—¬ answer에 λ‹΄κΈ°
        if max_cnt == cnt[i]:
            answer.append(i + 1)

    return answer


print(solution([1, 3, 2, 4, 2, 2, 3, 1, 4, 5, 2, 3, 4]))