쉽고 깔끔하게
[프로그래머스/python3] Level 2 튜플 문제풀이 본문
728x90
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/64065
특정 튜플을 표현하는 집합이 담긴 문자열 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))
<정답>
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 |