728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/64065?language=python3
최종 코드
def solution(s):
answer = []
s = s[2:-2]
ss = s.split('},{')
ss.sort(key = len)
for ns in ss:
ns = ns.split(',')
for n in ns:
if n not in answer: answer.append(n)
return list(map(int, answer))
풀이 과정
풀이 시간 28분
1.
def solution(s):
answer = []
#1. 가장 자리 {{, }} 없애기 -> ex) "{{2},{2,1},{2,1,3},{2,1,3,4}}" -> "2},{2,1},{2,1,3},{2,1,3,4"
s = s[2:-2]
#2. '},{'마다 문자열 자르기 -> ex) "2},{2,1},{2,1,3},{2,1,3,4" -> [['2'], ['2','1'], ['2','1','3'], ['2','1','3','4']]
ss = s.split('},{')
#3. 리스트 길이를 기준으로 오름차순으로 정렬하기
ss.sort(key = len)
#4. ss를 탐색하면서 answer에 없는 요소 추가하기
for ns in ss:
ns = ns.split(',')
for n in ns:
if n not in answer: answer.append(n)
return list(map(int, answer))
#시간복잡도 = O(nlogn), 공간복잡도 = O(n)
#n = len(s)
2.
def solution(s):
answer = []
#1. 가장 바깥 {} 없애기
s = s[1:-1]
#2. sets = 튜플 s의 모든 집합 구성하기
sets = []
#nset = 새로 추가될 튜플 s의 집합
nset = []
num = ""
for ss in s:
# '{'이면 다음 새로운 집합을 받아오기 위해 nset 초기화
if ss == '{': nset = []
# '}'이면 새로운 집합 nset의 마지막 원소 num을 추가하고(이때, 다음 새로운 원소를 받아오기 위해 num 초기화), sets에 nset을 추가한다.
elif ss == '}':
nset.append(int(num))
num = ""
sets.append(nset)
# ','이고 num에 원소가 있는 경우 -> ex) {1, 2} ss = ',' num = '1'
elif ss == ',':
if num != "":
#새로운 집합에 원소 num을 추가하고, num 초기화
nset.append(int(num))
num = ""
# 숫자인 경우, num에 붙여준다
else: num += ss
#3. 튜플 s의 모든 집합 sets의 집합들을 길이 순서대로 오름차순 정렬하기
sets.sort(key = len)
#4. sets의 각 집합들을 탐색하여 answer에 없는 원소가 들어있는 경우, answer에 추가하기
for t in sets:
for tt in t:
if tt not in answer:
answer.append(tt)
return answer
#시간복잡도 = O(nlogn), 공간복잡도 = O(n)
#n = len(s)
참고
- 1.크레인 인형뽑기 게임 -> https://hwayomingdlog.tistory.com/142
- 4. 호텔 방 배정 ->
- 5. 징검다리 건너기 ->2021.09.05 - [코테 노트/프로그래머스] - Level 3 징검다리 건너기 <2019 카카오 인턴십> Python3
728x90
반응형
'코테 노트 > 프로그래머스' 카테고리의 다른 글
Level 2 빛의 경로 사이클 Python 3 (0) | 2022.03.07 |
---|---|
Level 2 행렬 테두리 회전하기 Python 3 (0) | 2022.03.06 |
Level 4 가사 검색 <2020 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2021.09.06 |
Level 3 자물쇠와 열쇠 <2020 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2021.09.05 |
Level 2 괄호 변환 <2020 KAKAO BLIND RECRUITMENT> Python 3 (0) | 2021.09.05 |