프로그래머스-Level2-튜플

문제생각

전달되는 인자를 리스트 형태로 만들고 이를 문자열 길이를 기준으로 정렬을 진행한 다음 answer을 만들면 된다고 하였다. 내가 생각한 문제해결 순서는 다음과 같다.

  1. 전달된 인자를 리스트로 만든다
  • ',' 또는 '}' 일 경우 temp에 숫자를 집어넣는다.
  • 숫자일 경우 문자열로서 계속 연결한다.
  • '}' 가 나올경우 temp를 tu 리스트에 넣어주고 temp와 num을 초기화한다.
  1. 내부 리스트 길이 기준으로 정렬한다.
  2. 이중 for문을 이용하여 answer을 만든다.

문제해결 코드

def solution(s):
    answer = []
    temp = []
    le=len(s)
    s=list(s)[1:le-1]
   
    tu=[]
    flag=0
    num=''
    for i in s:
        if i.isdigit():
            num+=i
        elif i=='{':
            flag=1
        elif i==',' and flag==1:
            temp.append(int(num))
            num=''
        elif i=='}':
            flag=0
            temp.append(int(num))
            tu.append(temp)
            temp=[]
            num=''
    
    tu.sort(key=lambda x:len(x))
    
    for i in tu:
        for num in i:
            if num not in answer:
                answer.append(num)
    return answer

내가 해당 문제를 풀긴하였지만 결코 파이썬의 기능을 확실히 이용한 풀이는 아닌 것 같다. 다른사람의 풀이를 보니 내가 조건문으로써 작성한 것들을 lstrip, rstrip, split 등의 메서드로 모두 해결하였다. 확실히 나는 아직 한참 부족한 듯하다.

0개의 댓글