https://programmers.co.kr/learn/courses/30/lessons/64065
ref: https://hazung.tistory.com/103
import re
def solution(s):
answer = []
s = s.split('},{')
s = [re.sub('[{}]', '', c) for c in s]
s = [list(map(int, c.split(','))) for c in s]
s = list(sorted(s, key = len))
for i in range(len(s)):
target = s[i][0]
answer.append(target)
for j in range(i, len(s)):
del s[j][s[j].index(target)]
return answer
내가 푼 방식. 머릿 속에 떠오른 방법을 그대로 구현한거라 비효율적이다.
def solution(s):
answer = []
s = s[2:-2]
s = s.split("},{")
s.sort(key = len)
for i in s:
ii = i.split(',')
for j in ii:
if int(j) not in answer:
answer.append(int(j))
return answer
import re
def solution(s):
answer = []
a = s.split(',{')
a.sort(key = len)
for j in a:
numbers = re.findall("\d+", j)
for k in numbers:
if int(k) not in answer:
answer.append(int(k))
return answer
알고리즘은 풀이 2와 같다. 다른 점은 정규표현식을 사용해서 s의 요소별로 리스트를 만드는 것이다.
해당 정규식을 사용하면 하나 이상의 숫자를 찾을 때마다 리스트에 넣어준 후 반환해준다.