[Algorithm🧬] 모의고사

또상·2022년 1월 6일
0

Algorithm

목록 보기
28/133
post-thumbnail

문제 / 풀이.py

import math

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]
    
    # answers 길이보다 길게 만들어줘야 비교가 가능하니까 그렇게 만들어줌. 위의 코드와 한번에 썼어도 괜찮았을듯.
    # 이것 대신 밑의 for문에서 각각을 i % len(first) 이렇게 해주는 것이 더 좋았을듯.
    first = first * math.ceil(len(answers) / len(first))
    second = second * math.ceil(len(answers) / len(second))
    third= third * math.ceil(len(answers) / len(third))
    
    
    count = [0] * 3
    
    # 정답 개수 올리기.
    for i in range(len(answers)):
        if answers[i] == first[i]:
            count[0] += 1
        if answers[i] == second[i]:
            count[1] += 1
        if answers[i] == third[i]:
            count[2] += 1

    # 제일 큰 점수 찾고
    maxCount = max(count[0], count[1], count[2])
    
    # 그 점수와 같으면 배열에 추가
    for i in range(3):
        if count[i] == maxCount:
            answer.append(i+1)
    
    
    return answer

아무 생각이 안나~ 하는 바람에 이렇게 풀기는 했는데.. 아마 같은 문제에서 사람 수도 입력받아서 푸는걸로 문제가 바뀌면.... 비효율적인 코드가 아닐까 싶다. 공간복잡도도 그리 좋지는 않네..

profile
0년차 iOS 개발자입니다.

0개의 댓글