def solution(s):
s = s[1:-1]
ans = []
sub_tuples = s.split(",{")
for i in range(len(sub_tuples)):
sub_tuples[i] = sub_tuples[i].replace("{","").replace("}", "").split(",")
sub_tuples.sort(key = lambda x: len(x))
for subset in sub_tuples:
for element in subset:
if element not in ans:
ans.append(element)
return list(map(int, ans))
처음에는 튜플과 집합의 차이점을 인지하지 못해서 통과하지 못했다. 튜플은 순서가 중요한데 집합에는 순서가 바뀔 수 있다. 따라서 순서가 바뀌지 않는 1개짜리 집합에서 시작해서 하나씩 잡아가야한다.
def solution(s):
s = Counter(re.findall('\d+', s))
return list(map(int, [k for k, v in sorted(s.items(), key=lambda x: x[1], reverse=True)]))
import re
from collections import Counter
정규식과 Counter를 이용해서 우아하게 풀었다.