2023-04-15 알고리즘 복기록

프로그래머스 “튜플”

어려웠던 부분

문제에서 정의하는 튜플을 이해하는 것이 가장 어려웠다. 튜플을 지칭하는 집합에 대하여 원소가 나타난 횟수가 많은 순서대로 나열했을 때 해당 튜플이 된다는 점을 이해하고서야 문제를 풀 수 있었다.

해결한 방법

  1. 튜플의 집합에 대해 적절히 parsing (‘{‘, ‘}’ 문자열을 기준으로)
  2. 각 숫자에 대해 나타난 횟수를 기록
  3. 내림차순으로 정렬한 결과를 리턴
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from collections import defaultdict

def solution(s):
    d = defaultdict(int)
    s = s[1:-1]
    left = 0
    st = []
    for i in range(len(s)):
        if s[i] == '{':
            left = i
        elif s[i] == '}':
            for numStr in s[left+1:i].split(','):
                d[int(numStr)] += 1
            
            
    return [item[0] for item in sorted(d.items(), key=lambda x: x[1], reverse=True)]

comments powered by Disqus