본문 바로가기
ALGORITHM/PROGRAMMERS

[PG/Python] 튜플

by 안녕나는현서 2021. 12. 16.
728x90

📌 문제

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

 

코딩테스트 연습 - 튜플

"{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1]

programmers.co.kr

 

📌 문제 접근 방법

  1. 입력이 문자열로 들어오기 때문에 split을 쓰려다가 ','로 끊는 건 안되겠다 생각하고 포기했는데, 생각해보니 '},'으로 끊으면 됐었다.
  2. 우선, split을 사용하지 않고 sets에 문자열로 들어온 입력값을 리스트 형태로 바꿔서 저장해주었다.
  3. sets를 길이순대로 정렬한 후, sets에 들어있는 하나의 리스트를 각각 순회하며 answer에 값을 저장해주었다.
    answer에 값이 저장되면 해당 리스트의 다른 숫자는 고려할 필요없으므로 바로 break 해줬다.

 

📌 코드

def solution(s):
    sets = []
    temp = []
    temp_num = ''
    start = False
    for word in s[1:len(s)-1]:
        if word == '{':
            start = True
        elif start and word.isnumeric():
            temp_num += word
        elif start and word == ',':
            temp.append(int(temp_num))
            temp_num = ''
        elif word == '}':
            start = False
            temp.append(int(temp_num))
            temp_num = ''
            sets.append(temp)
            temp = []
    
    sets.sort(key = lambda x : len(x))
    
    answer = []
    for a_set in sets:
        for a in a_set:
            if a not in answer:
                answer.append(a)
                break
    
    return answer
728x90

'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글

[PG/Python] 배달  (0) 2021.12.16
[PG/Python] 행렬 테두리 회전하기  (0) 2021.12.16
[PG/Python] 가장 먼 노드  (0) 2021.12.09
[PG/Python] 기능개발  (0) 2021.12.09
[PG/Python] 불량 사용자  (0) 2021.12.08

댓글