본문 바로가기

코딩문제

모의고사(프로그래머스 코딩테스트 연습) 파이썬

#1차 시도
def solution(answers):
    answer = []
    cnt = 0
    
    user_1 = [1,2,3,4,5]
    user_2 = [2,1,2,3,2,4,2,5]
    user_3 = [3,3,1,1,2,2,4,4,5,5]
    users = [user_1,user_2,user_3]
    
    for idx, user in enumerate(users):
        while len(answers) > len(user):
            user + user
        for i in range(len(answers)):
            if user[i]==answers[i]:
                user[i] = 0
        if not answer or cnt <= user.count(0):
            cnt = user.count(0)
            answer.append(idx+1)
    return answer

테스트코드는 통과했지만 코드채점에서 막혔다. for문과 while문이 많아서 과부하가 생긴느낌이다.

 

def solution(answers):
    answer = []
    scores = [0]*3
    user1 = [1, 2, 3, 4, 5]
    user2 = [2, 1, 2, 3, 2, 4, 2, 5]
    user3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]

    for i in range(len(answers)):
        if answers[i] == user1[i % len(user1)]:
            scores[0] += 1
        if answers[i] == user2[i % len(user2)]:
            scores[1] += 1
        if answers[i] == user3[i % len(user3)]:
            scores[2] += 1

    max_score = max(scores)
    for i in range(3):
        if scores[i] == max_score:
            answer.append(i + 1)

    return answer

문제를 풀면서 enumerate 함수에 대해서 처음 알았다.

list로 for문을 돌릴때 index가 필요할 때 요긴하게 써먹을 것 같다.