쉽고 깔끔하게
[프로그래머스/python3] Level 2 튜플 문제풀이 본문
728x90
반응형

문제
https://programmers.co.kr/learn/courses/30/lessons/64065
코딩테스트 연습 - 튜플
"{{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] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]
programmers.co.kr
특정 튜플을 표현하는 집합이 담긴 문자열 s가 매개변수로 주어질 때, s가 표현하는 튜플을 배열에 담아 return 하도록 solution 함수를 완성해주세요.
<풀이>
문제를 읽고 해결해야 하는 순서대로 정리하면 다음과 같다.
- 문자열이 "{{2}, {2,1},{2,1,3},{2,1,3,4}}" 처럼 주어지기 때문에 " { , } 같은 기호 없애주기
- 튜플의 길이(갯수)로 정렬해주기
- 배열을 탐색할 때 정답(반환) 배열과 비교하여 들어있지 않는 숫자를 정답(반환) 배열에 append해주기
순서대로 코드를 작성해보자.
1. 문자열이 "{{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}, {2,1},{2,1,3},{2,1,3,4
- 2
}, {2,1},{2,1,3},{2,1,3,4 : },{로 분할(split)하기
s_arr = s.split('},{')
► 2 2,1 2,1,3 2,1,3,4
2. 튜플의 길이(갯수)로 정렬해주기
길이로 배열을 정렬해주는 것은 'sort함수의 key = len'을 이용해주면 간단히 해결할 수 있다.
s_arr.sort(key = len)
► 2 2,1 2,1,3 2,1,3,4
해당 예시는 이미 배열의 길이 순으로 정렬되어 있기 때문에 앞의 결과와 동일하다.
3. 배열을 탐색할 때 정답(반환) 배열과 비교하여 들어있지 않는 숫자를 정답(반환) 배열에 append해주기
우선 문자열에 ,(콤마)가 들어있기 때문에 첫 번째 for문을 돌릴 때 split 함수를 통하여 ,를 없애야 한다.
또한 두 번째 for문에서 정답(반환) 배열에 들어있지 않은 숫자를 append 해주어야 한다.
for i in s_arr:
new_arr = i.split(',')
for j in new_arr:
if int(j) not in result_arr:
result_arr.append(int(j))
<정답>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def solution(s): | |
result_arr = [] | |
s = s[2:-2] | |
s_arr = s.split('},{') | |
s_arr.sort(key = len) | |
for i in s_arr: | |
new_arr = i.split(',') | |
for j in new_arr: | |
if int(j) not in result_arr: | |
result_arr.append(int(j)) | |
return result_arr |
728x90
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스/python3] Level 1 음양 더하기 문제풀이 (0) | 2021.09.17 |
---|---|
[프로그래머스/python3] Level 1 숫자 문자열과 영단어 문제풀이 (0) | 2021.09.17 |
[프로그래머스/python3] Level 1 모의고사 문제풀이 (0) | 2021.03.02 |
[프로그래머스/python3] Level 1 체육복 문제풀이 (0) | 2021.02.26 |
[프로그래머스/python3] Level 2 H-Index 문제풀이 (0) | 2021.02.26 |