[프로그래머스] 튜플(python)

.·2022년 4월 9일

문제 링크 - https://programmers.co.kr/learn/courses/30/lessons/64065


  • 문제 설명


  • 제한사항 및 입출력 예


나의 풀이

def solution(s):
    result = []
    real_result = []
    ss = []
    s_list = []
    a = ''
    for i in s:
        if i.isdigit():
            a += i
        elif i == ',' or i == '}':
            ss.append(a)
            a = ''
            
    # ss = 	['2', '', '2', '1', '', '2', '1', '3', '', '2', '1', '3', '4', '']
        
    for i in ss:
        if i != '':
            s_list.append(int(i))
        else:
            result.append(s_list)
            s_list = []
            
    # result = [[2], [2, 1], [2, 1, 3], [2, 1, 3, 4]]
    
    result.sort(key = lambda x : len(x))
    for i in result:
        for j in i:
            if j not in real_result:
                real_result.append(j)
    return real_result
  • 입력된 문자열을 [[2], [2, 1], [2, 1, 3], [2, 1, 3, 4]]와 같이 리스트 형태로 바꿈
  • 길이를 기준으로 정렬
  • 하나씩 확인하면서 반환할 리스트에 값이 들어있지 않다면 append
  • 처음부터 ss를 저렇게 만들어야지 하고 만든 게 아니라 만들고 보니 저런 형태라서 중간에 ''를 기준으로 나눠주면 되겠다고 생각이 들었다. 그래서 풀었는데도 뭔가 찝찝한 느낌

다른 사람의 풀이

def solution(s):
    answer = []
    s = s[2:-2]
    s = s.split("},{")
    s.sort(key = len)
    for i in s:
        ii = i.split(',')
        for j in ii:
            if int(j) not in answer:
                answer.append(int(j))
    return answer
  • 맨 앞 '{{'와 맨 뒤 '}}'를 잘라줌
  • '{'와 '}'를 기준으로 split하면 괄호가 모두 사라짐
    => [ '1', '1,2', '1,2,3' ]
  • 반복문에 들어오는 원소마다 ','을 기준으로 split
    => ['1,2']가 들어오면 ['1', '2']로 만듦
  • answer 배열에 차례대로 append
  • 출처 - https://hazung.tistory.com/103

느낀점

  • 풀고 설명도 깔끔하게 할 줄 알기!!!!!

0개의 댓글