본문 바로가기
코딩테스트

[프로그래머스] 완전 탐색 - 모의고사

by 박매트 2024. 2. 3.

 

 

내 답

def solution(answers):
    answer = []
    
    first = [1, 2, 3, 4, 5]
    second = [2, 1, 2, 3, 2, 4, 2, 5]
    third = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    
    f_len = len(first)
    s_len = len(second)
    t_len = len(third)
    
    f_cnt = 0
    s_cnt = 0
    t_cnt = 0
    
    for index, value in enumerate(answers):
        
        f = first[index%f_len]
        s = second[index%s_len]
        t = third[index%t_len]
        
        if f == value:
            f_cnt+=1
        if s == value:
            s_cnt+=1
        if t == value:
            t_cnt+=1
    
    list_num = [f_cnt, s_cnt, t_cnt]
    
    for i in range(len(list_num)):
        if list_num[i] == max(list_num):
            answer.append(i + 1)
        
    return answer

 

그냥 문제 이해한 대로 고대로 코드로 짰다...

되게 효율성이 떨어지겠거니 했는데 통과

와 근데 다른 사람 답하고 똑같은 건 간만이다..!

 

 

다른 사람 답

 

def solution(answers):
    pattern1 = [1,2,3,4,5]
    pattern2 = [2,1,2,3,2,4,2,5]
    pattern3 = [3,3,1,1,2,2,4,4,5,5]
    score = [0, 0, 0]
    result = []

    for idx, answer in enumerate(answers):
        if answer == pattern1[idx%len(pattern1)]:
            score[0] += 1
        if answer == pattern2[idx%len(pattern2)]:
            score[1] += 1
        if answer == pattern3[idx%len(pattern3)]:
            score[2] += 1

    for idx, s in enumerate(score):
        if s == max(score):
            result.append(idx+1)

    return result

 

축구 보러 가야지..