알고리즘/[Python] 프로그래머스

[Python/프로그래머스/2019 카카오 개발자 겨울 인턴십] 튜플

출처 : https://programmers.co.kr/learn/courses/30/lessons/64065

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 


문제 풀이 팁

Python 기본 내장 함수 중에, eval() 이라는 함수가 있다. 

 

 

eval() 함수

eval()함수는 문자열을 입력받아서, 실행한 결과값을 돌려주는 함수이다.

>>> eval('1+2+3')
6
 
 
>>> eval('[1,2,3,4,5]')
[12345]
 
 
>>> a = 'i n t e r e s t i n g'
>>> eval('a.split()')
['i''n''t''e''r''e''s''t''i''n''g']
 
cs

튜플 문제에서 s가 함수의 입력값으로 주어지고 있는데,

s = "{{2},{2,1},{2,1,3},{2,1,3,4}}" 처럼, 변수 s에 저장된 값이 문자열이기 때문에 eval()함수를 사용하면 편하다.

 

eval(s)를 바로 하면 안되는 이유는

set()은 원소(=element)값으로 튜플(=tuple)처럼 변하지 않는 값을 받아야 하기 때문이다.

s의 가장 겉껍데기를 set()이 아닌, list()로 만들어주자.

 

 

 

 


Code

def solution(s):
    s = '[' + s[1:-1+ ']'
    s_list = eval(s)
    s_list.append(set())
    s_list.sort(key = lambda x: len(x))
    
    result_list = []
    for p in range(1len(s_list)):
        x = s_list[p] - s_list[p-1]
        result_list.append(x.pop())
    return result_list
cs