[프로그래머스] 튜플 풀이 _ 2019 카카오 개발자 겨울 인턴십 문제



1. 문제

https://programmers.co.kr/learn/courses/30/lessons/12973

2. 풀이

  • 문자열에서 숫자와 쉼표만 남기고 모두 제거합니다.
  • 각 문자열을 돌면서 숫자와 쉼표의 조합인 경우에는 배열로 생성합니다.
  • 딕셔너리(해쉬)를 이용하여 문자열의 존재 유무를 체크합니다.
import re
def solution(s):
    answer = []
    _s = re.split('[{}]', s[1:-1]) # 문자열에서 {} 를 모두 제거하고 숫자와 쉼표만 남김
    
    arr = []
    for x in _s:    # 각 문자열을 돌면서 숫자와 쉼표의 조합인 경우에는 배열로 생성합니다.            
        if x == '' or x == ',':
            continue
        arr.append(x.split(','))
    arr = sorted(arr, key=lambda x: len(x)) # 배열 크기 순서대로 정렬
    
    is_exist = {}   # 딕셔너리를 이용하여 문자열의 존재유무를 체크합니다. 
    for x in arr:
        for num in x:
            if num not in is_exist:
                is_exist[num] = 1
                answer.append(int(num))
    
    return answer