📌 프로그래머스: [모의고사]
🔗 문제 링크
문제 접근 방식 💡
- 수포자들의 반복되는 패턴을 리스트로 저장하고, 각 패턴을 순회하며 정답과 비교.
- 정답을 맞힌 개수를 저장한 후, 최대 점수를 가진 사람을 반환.
- 불필요한 리스트 사용을 줄이고 enumerate()를 활용하여 깔끔한 코드로 리팩토링.
Solution 💻
def solution(answers):
patterns = [
[1, 2, 3, 4, 5],
[2, 1, 2, 3, 2, 4, 2, 5],
[3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
]
scores = [sum(a == pattern[i % len(pattern)] for i, a in enumerate(answers)) for pattern in patterns]
max_score = max(scores)
return [i + 1 for i, score in enumerate(scores) if score == max_score]
시간 복잡도 분석 ⏲️
- 패턴 검사: O(N * 3) (N은 answers 길이)
- 최대 점수 탐색: O(3)
- 최종 결과 리스트 생성: O(3)
- 총 시간 복잡도: O(N)
공간 복잡도 분석 🗄️
- 공간 복잡도: O(1),
- patterns 및 scores 리스트는 고정된 크기(3)를 유지.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스: [체육복] (0) | 2025.03.10 |
---|---|
프로그래머스: [K번째 수] (0) | 2025.03.10 |
프로그래머스: [같은 숫자는 싫어] (0) | 2025.03.10 |
프로그래머스: [단어 변환] (0) | 2025.03.08 |
프로그래머스: [전력망을 둘로 나누기] (0) | 2025.03.08 |