프로그래머스 - 튜플

오늘의 문제

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

특정 튜플을 표현하는 집합이 담긴 문자열 s가 매개변수로 주어질 때, s가 표현하는 튜플을 배열에 담아 return 하도록 solution 함수를 완성해주세요.

조건

  1. s의 길이는 5 이상 1,000,000 이하입니다.
  2. s는 숫자와 ‘{‘, ‘}’, ‘,’ 로만 이루어져 있습니다.
  3. 숫자가 0으로 시작하는 경우는 없습니다.
  4. s는 항상 중복되는 원소가 없는 튜플을 올바르게 표현하고 있습니다.
  5. s가 표현하는 튜플의 원소는 1 이상 100,000 이하인 자연수입니다.
  6. return 하는 배열의 길이가 1 이상 500 이하인 경우만 입력으로 주어집니다.

풀이 방법

1
2
3
4
5
6
7
8
9
10
11
12
13
def solution(s):
    s = s.replace('{', '[').replace('}', ']')
    s = eval(s)
    s = sorted(s, key=lambda x: len(x))

    result = list()

    for i in s:
        value = i.pop()
        if set(i).difference(set(result)):
            result.append(list(set(i).difference(set(result)))[0])
        else: result.append(value)
    return result

s가 중복이 없다는 것만 알면 쉽게풀 수 있다

사담

1
2
3
4
5
6
7
def solution(s):

    s = Counter(re.findall('\d+', s))
    return list(map(int, [k for k, v in sorted(s.items(), key=lambda x: x[1], reverse=True)]))

import re
from collections import Counter

다른 사람의 풀이인데 문제 제한사항인 중복이 없고, 이전에 나왔던 숫자들이 계속 출현하는 형태를 잘 활용한 예시길래 가져왔다. 평소 내가 푸는 풀이 스타일이랑 비슷하기도 한 것 같고 ?

오늘은 3시간 자고 일어나서 머리가 굳었다 암튼 그런것임