Search

PGS 튜플

태그
정렬

문제 설명

특정 튜플을 표현하는 집합이 담긴 문자열 ss가 매개변수로 주어질 때, ss가 표현하는 튜플을 배열에 담아 반환하는 문제

예제 입력/출력

s
result
"{{2},{2,1},{2,1,3},{2,1,3,4}}"
[2, 1, 3, 4]
"{{1,2,3},{2,1},{1,2,4,3},{2}}"
[2, 1, 3, 4]
"{{20,111},{111}}"
[111, 20]
"{{123}}"
[123]
"{{4,2,3},{3},{2,3,4,1},{2,3}}"
[3, 2, 4, 1]

제약 조건

5s1,000,0005 ≤ s ≤ 1,000,000
11 ≤ return 하는 배열의 길이 500≤ 500

문제 풀이

풀이 정렬 - O(NlogN)O(NlogN)
문제의 핵심은 입력된 문자열 형태의 집합들로부터 중복되지 않는 숫자들을 순서대로 추출하는 것
접근 방식
1.
문자열 파싱 후 리스트 형태로 변환
예: {{1,2},{2,1}}[[1, 2], [2, 1]]
2.
생성된 숫자 리스트들을 길이 순으로 정렬
가장 작은 집합부터 처리하여 점진적으로 숫자를 추가하기 위함.
3.
정렬된 각 집합을 순회하면서 이전 집합에서 나오지 않는 숫자를 추가

풀이 코드

풀이 정렬 - O(NlogN)O(NlogN)
def solution(s): answer = [] tmp_s = s.lstrip('{').rstrip('}').split('},{') tuples = [] for ts in tmp_s: tuples.append(ts.split(',')) tuples.sort(key = len) for tup in tuples: for n in tup: if int(n) not in answer: answer.append(int(n)) return answer
Python
복사