https://programmers.co.kr/learn/courses/30/lessons/64065
def solution(s):
answer = [] # 정답을 담을 리스트
tuples = [] # 한 구간 튜플
element = [] # 한 원소
temp = '' # 임시로 담을
# 문자를 숫자로 바꿀 수 있는지 없는지를 체크해야한다. 밑에 함수로 만들었다.
for index in range(0,len(s)):
# 1. 숫자로 바꿀 수 있으면 temp에 더한다. [111,20] 이런식으로 숫자가 연속되면 더해서 넣어주어야한다.
#[1,2,3,4] 한개씩 끊어지면 , 가 나온 뒤에 되기 때문에
# 두번째 조건문에서 처리 된다.
if (isNumber(s[index])):
temp += s[index]
elif (s[index] == ',' or s[index] == '}'):
# ,나 }가 나왔을 때 temp가 숫자가 더해져있는 상태면 element에 넣는다.
if (temp != ''):
element.append(int(temp))
temp = ''
if (s[index] == '{' or index == len(s) -1):
# { 이 나오면 다음 원소가 시작 된다는 뜻이고 index가 마지막까지 가면 끝이라는 소리니 이때까지 만든 element를 tuples에 넣어준다.
if (len(element) > 0):
tuples.append(element)
element = []
tuples.sort(key = lambda x : len(x)) # 길이별로 정렬 해주고
for items in tuples: # answer에 없는 원소를 찾아 넣어준다.
for item in items:
if item not in answer:
answer.append(item)
return answer
def isNumber(s): # try except 문으로 숫자로 변경이 될 경우 True 아닐경우 False를 반환한다.
try:
int(s)
return True
except ValueError:
return False