쉽고 깔끔하게

[프로그래머스/python3] Level 2 튜플 문제풀이 본문

Algorithm/Programmers

[프로그래머스/python3] Level 2 튜플 문제풀이

찐무 2021. 9. 16. 15:57
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 함수를 완성해주세요.


<풀이>

문제를 읽고 해결해야 하는 순서대로 정리하면 다음과 같다.

  1. 문자열이 "{{2}, {2,1},{2,1,3},{2,1,3,4}}" 처럼 주어지기 때문에 " { , } 같은 기호 없애주기
  2. 튜플의 길이(갯수)로 정렬해주기
  3. 배열을 탐색할 때 정답(반환) 배열과 비교하여 들어있지 않는 숫자를 정답(반환) 배열에 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
반응형