특정 튜플을 표현하는 집합이 담긴 문자열 s가 매개변수로 주어질 때, s가 표현하는 튜플을 배열에 담아 return 하도록 solution 함수를 완성해주세요.
[제한사항]
s의 길이는 5 이상 1,000,000 이하입니다.
s는 숫자와 '{', '}', ',' 로만 이루어져 있습니다.
숫자가 0으로 시작하는 경우는 없습니다.
s는 항상 중복되는 원소가 없는 튜플을 올바르게 표현하고 있습니다.
s가 표현하는 튜플의 원소는 1 이상 100,000 이하인 자연수입니다.
return 하는 배열의 길이가 1 이상 500 이하인 경우만 입력으로 주어집니다.
풀이
[ 내 풀이 ]
def solution(s):
answer = []
tmp = s.replace('{', '')
tmp = tmp.split('}')
tmp = ' '.join(tmp).split()
new = []
# 문자열의 첫글자에 ,가 오면 , 삭제
for i in tmp:
k = i
if i[0] == ',':
k = i[1:]
new.append(k)
# 리스트를 길이순으로 정렬
new = sorted(new, key=len)
for i in new:
for n in i.split(','):
if int(n) not in answer:
answer.append(int(n))
return answer
제법 노가다성으로 풀긴 했지만... 내가 푼 방법으로는
1. 먼저 { 괄호를 없애고, } 기준으로 문자열을 split하고 묶는다. 2. 리스트를 순회하며 요소의 첫번째 문자가 ','면 삭제한다. 3. 리스트를 길이순으로 정렬한다. 4. 리스트를 순회하며 다시 ',' 단위로 순회하고, 그 값이 answer에 없으면 추가한다.
[ 다른 사람의 풀이 ]
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
[ 정규표현식? ]
정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴. 다양한 언어에서 지원하고 있으며 사용 방법은 다음과 같다.