본문 바로가기

Coding Test/Programmers

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

728x90

 

나의 풀이

def solution(s):
    answer = []
    sets = []
    temp_set = set()
    temp_num = 0
    for x in s[1:-1]:
        if x == '{':
            temp_num = 0
            temp_set = set()
        elif x == '}':
            if temp_num:
                temp_set.add(temp_num)
                temp_num = 0
            sets.append(temp_set)
        elif x == ',':
            if temp_num:
                temp_set.add(temp_num)
                temp_num = 0
        else:
            temp_num = temp_num * 10 + int(x)

    sets.sort(key=lambda x: len(x))

    for s in sets:
        for i in s:
            if i not in answer:
                answer.append(i)
                break

    return answer

 

 

정규표현식과 counter를 사용한 풀이

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

 

 

lstrip과 rstrip을 사용한 풀이

def solution(s):
    answer = []

    s1 = s.lstrip('{').rstrip('}').split('},{')

    new_s = []
    for i in s1:
        new_s.append(i.split(','))

    new_s.sort(key = len)

    for i in new_s:
        for j in range(len(i)):
            if int(i[j]) not in answer:
                answer.append(int(i[j]))

    return answer

 

 

eval을 사용한 풀이

def solution(s):
    s = eval(s.replace("{", "[").replace("}", "]"))
    answer = list({num:0 for k in sorted(s, key=lambda x: len(x)) for num in k}.keys())
    return answer
반응형