[프로그래머스 level2] 튜플 Python

IT공부중·2020년 4월 7일
0

알고리즘

목록 보기
7/49

2019 카카오 개발자 겨울 인턴십 2번 튜플

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

def solution(s):
    answer = [] # 정답을 담을 리스트
    tuples = [] # 한 구간 튜플
    element = [] # 한 원소
    temp = '' # 임시로 담을
    
    # 문자를 숫자로 바꿀 수 있는지 없는지를 체크해야한다. 밑에 함수로 만들었다.
    for index in range(0,len(s)):
    # 1. 숫자로 바꿀 수 있으면 temp에 더한다. [111,20] 이런식으로 숫자가 연속되면 더해서 넣어주어야한다. 
    #[1,2,3,4] 한개씩 끊어지면 , 가 나온 뒤에 되기 때문에 
    # 두번째 조건문에서 처리 된다.
        if (isNumber(s[index])): 
            temp += s[index]
        elif (s[index] == ',' or s[index] == '}'):
   # ,나 }가 나왔을 때 temp가 숫자가 더해져있는 상태면 element에 넣는다.
            if (temp != ''):
                element.append(int(temp))
                temp = ''
        if (s[index] == '{' or index == len(s) -1): 
        # { 이 나오면 다음 원소가 시작 된다는 뜻이고 index가 마지막까지 가면 끝이라는 소리니 이때까지 만든 element를 tuples에 넣어준다.
            if (len(element) > 0):
                tuples.append(element)
                element = []

    tuples.sort(key = lambda x : len(x)) # 길이별로 정렬 해주고
    for items in tuples: # answer에 없는 원소를 찾아 넣어준다.
        for item in items:
            if item not in answer:
                answer.append(item)
        
    return answer

def isNumber(s): # try except 문으로 숫자로 변경이 될 경우 True 아닐경우 False를 반환한다.
    try:
        int(s)
        return True
    except ValueError:
        return False
profile
4년차 프론트엔드 개발자 문건우입니다.

0개의 댓글