"""
입출력 예시)
s = "{{2},{2,1},{2,1,3},{2,1,3,4}}" -> [2, 1, 3, 4]
s = "{{1,2,3},{2,1},{1,2,4,3},{2}}" -> [2, 1, 3, 4]
s = "{{20,111},{111}}" -> [111, 20]
s = "{{123}}" -> [123]
s = "{{4,2,3},{3},{2,3,4,1},{2,3}}" -> [3, 2, 4, 1]
"""
def solution(s):
s_list = sorted([s.split(',') for s in s[2:-2].split('},{')], key=len)
answer = []
# 원소들의 원래 순서 찾기
for l in s_list:
for s in l:
if int(s) not in answer: # answer에 요소가 없는 경우
answer.append(int(s)) # answer에 해당 값을 int으로 변경해 추가
break
return answer
s의 맨 앞 '{{'과 '}}'를 제외한 (s[2:-2]) 문자열을 '},{'를 기준으로 split한 배열
[ forsins[2:-2].split('},{')]
','를 기준으로 다시 한번 더 각 배열 요소마다 split
s.split(',')
s = "{{20,111},{111}}"
# s의 맨앞과 맨뒤에 있는 '{{'과 '}}' 제외
s[2:-2]
"""
'20,111},{111'
"""
# '},{'로 split
s[2:-2].split('},{')
"""
['20,111', '111']
"""
# s[2:-2].split('},{') 의 원소들을 ','로 split
[s.split(',') for s in s[2:-2].split('},{')]
"""
[['20', '111'], ['111']]
"""
s = "{{1,2,3},{2,1},{1,2,4,3},{2}}"
[s.split(',') for s in s[2:-2].split('},{')]
"""
[['1', '2', '3'], ['2', '1'], ['1', '2', '4', '3'], ['2']]
"""
길이를 기준으로 오름차순 정렬
sorted([], key=len)
더 간단한 코드
import re
from collections import Counter
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)]))