반응형
1. 문제
2. 풀이
1) string을 list 형태로 만든다
2) 원소를 크기 순서대로 정렬해서 앞의 집합에 없는 원소를 추가한다.
3. 구현
1) .split을 잘 써서 string을 분리하면 훨씬 깔끔해짐.
2) 원소의 크기로 정렬할 때는 .sort(key=len)
3) 원소가 있는 지 아닌 지 확인할 때 for item (not) in list: 하면 된다.
내풀이
def solution(s):
answer = []
tmp=[]
tmpList =[]
tmpNum=0
for ch in s:
if ch.isdigit():
tmpNum=int(ch)+tmpNum*10
if ch==',':
if tmpNum == 0:
continue
else:
tmp.append(tmpNum)
tmpNum=0
if ch=='}':
if tmpNum != 0:
tmp.append(tmpNum)
tmpNum=0
if not tmp==[]:
tmpList.append([len(tmp), tmp])
tmp=[]
tmpList.sort()
# print(tmpList)
for size, lis in tmpList:
for item in lis:
if item not in answer:
answer.append(item)
# for li in tmpList:
return answer
좋은 풀이 1
def solution(s):
answer = []
s1 = s.lstrip('{').rstrip('}').split('},{')
new_s = []
for i in s1:
new_s.append(i.split(','))
new_s.sort(key = len)
for i in new_s:
for j in range(len(i)):
if int(i[j]) not in answer:
answer.append(int(i[j]))
return answer
풀이 2
def solution(s):
# {{, }}를 제거 후 },{ 으로 나누기
data = s[2:-2].split("},{")
# 길이 별로 오름차순 정렬
data = sorted(data, key=lambda x: len(x))
answer = []
for item in data:
# 각각의 원소로 분류 후
item = list(map(int, item.split(",")))
for value in item:
# 포함되어 있지 않으면 input
if value not in answer:
answer.append(value)
return answer
반응형
'PS > 프로그래머스' 카테고리의 다른 글
프로그래머스 오픈채팅방 python (0) | 2021.06.14 |
---|---|
프로그래머스 124나라의 숫자 python (0) | 2021.06.14 |
프로그래머스 문자열압축 python (0) | 2021.06.12 |
프로그래머스 타겟넘버 python, BFS로 풀기 (0) | 2021.06.10 |
프로그래머스 기능개발 python (0) | 2021.06.10 |
댓글