새소식

Problem solving/문제 풀이 - 2023.02.08

[파이썬] 프로그래머스 튜플 풀이

  • -

문제 확인

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

나의 풀이

  • 튜플은 원소의 순서를 고려해야 하기 때문에, 낮은 길이의 튜플부터 확인하면, 입력 순서를 확인할 수 있다.
  • 각 성분으로 구성된 튜플을 얻기 위해서, 정규 표현식을 활용 했다.
    • 숫자가 1번 이상 나오고, 이후 "," 와 숫자가 올 수도, 안 올수도 있도록 정규 표현식을 구성 했다.
# 원소의 개수가 n, 중복되는 원소가 없는 튜플
# 튜플은 원소의 순서를 고려해야 함 -> 집합의 개수가 늘어날 수록 1 개 씩 추가 됨
# 이를 통해 튜플 원소의 순서를 알 수 있다!
import re

def solution(s):
    # 최종 반환할 튜플
    answer = []
    s = s[1:-1]
    # 중복 문자열 확인
    char_set = set()
    # 길이에 따라 정렬하기 위해 문자열 저장
    s_list = []
    for word in re.findall(r"{[0-9]+[,0-9]*}", s):
        # 중괄호 제거 + ','를 기준으로 숫자 나누기
        word = word[1:-1].split(",")
        s_list.append(word)
    # 길이에 따라 정렬
    s_list.sort(key = lambda x : len(x))
    # 원래 튜플 반환하기
    for word in s_list:
        for char in word:
            if char not in char_set:
                char_set.add(char)
                answer.append(int(char))
    return answer
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.