문제 주소입니다.
https://programmers.co.kr/learn/courses/30/lessons/64065
1. 문제 설명
2. 문제 해석
3. 소스 코드
4. 결과
1. 문제 설명
셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다.
튜플은 다음과 같은 성질을 가지고 있습니다.
원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3, ..., an)이 주어질 때(단, a1, a2, ..., an은 자연수), 이는 다음과 같이 집합 기호 '{', '}'를 이용해 표현할 수 있습니다.
예를 들어 튜플이 (2, 1, 3, 4)인 경우 이는
와 같이 표현할 수 있습니다. 이때, 집합은 원소의 순서가 바뀌어도 상관없으므로
는 모두 같은 튜플 (2, 1, 3, 4)를 나타냅니다. 특정 튜플을 표현하는 집합이 담긴 문자열 s가 매개변수로 주어질 때, s가 표현하는 튜플을 배열에 담아 return 하도록 solution 함수를 완성해주세요. |
제한사항
|
예시
입출력 예
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] |
2. 문제풀이
데이터를 편집하여 각각 리스트에 담기도록 변경 후 길이에 따라 정렬을 했다. 첫번째 예시라면 [ [2], [2,1], [1,2,3], [1,2,4,3] ] 모양이 나오게 된다. 이제 앞에서부터 순서대로 넣는다. 중복검사는 여러방식으로 할 수 있으며 나는 딕셔너리를 이용했다. 딕셔너리에 값을 넣어봐서 있다면 answer에 넣지않고 없다면 넣어서 처리했다. |
3. 소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
def solution(s):
answer = []
s = s.replace('{', '')
s = s.split('}')
for i in range(len(s)-1, -1, -1):
if s[i] == '':
s.pop(i)
else:
s[i] = s[i].split(',')
if i:
s[i].pop(0)
s[i] = list(map(int, s[i]))
s = sorted(s, key=len)
#여기까지가 정렬
dic = {}
for i in s:
for j in i:
if dic.get(j, -1) == -1:
answer.append(j)
dic[j] = 1
return answer
|
4. 결과
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
호텔방 배정 python(카카오 2019 겨울인턴십)[프로그래머스] (0) | 2020.05.06 |
---|---|
불량사용자 python(카카오 2019겨울인턴십)[프로그래머스] (0) | 2020.05.05 |
크레인 게임 python(카카오 2019 겨울인턴십)[프로그래머스] (0) | 2020.05.03 |
프린터 C++(스택/큐)[프로그래머스] (0) | 2020.05.02 |
기능개발 C++(스택/큐)[프로그래머스] (0) | 2020.05.01 |
댓글