본문 바로가기
PS/프로그래머스

프로그래머스 튜플 python

by 지기_ 2021. 6. 13.
반응형

1. 문제

 

2. 풀이

1) string을 list 형태로 만든다

2) 원소를 크기 순서대로 정렬해서 앞의 집합에 없는 원소를 추가한다.

 

3. 구현

1) .split을 잘 써서 string을 분리하면 훨씬 깔끔해짐.

2) 원소의 크기로 정렬할 때는 .sort(key=len)

3) 원소가 있는 지 아닌 지 확인할 때 for item (not) in list: 하면 된다.

내풀이


def solution(s):
    answer = []
    tmp=[]
    tmpList =[]
    tmpNum=0
    for ch in s:
        if ch.isdigit():
            tmpNum=int(ch)+tmpNum*10
        if ch==',':
            if tmpNum == 0:
                continue
            else:
                tmp.append(tmpNum)
            tmpNum=0
        if ch=='}':
            if tmpNum != 0: 
                tmp.append(tmpNum)
                tmpNum=0
            if not tmp==[]:
                tmpList.append([len(tmp), tmp])
            tmp=[]
    tmpList.sort()
    # print(tmpList)
    for size, lis in tmpList:
        for item in lis:
            if item not in answer:
                answer.append(item)
    
    # for li in tmpList:
        
    
    return answer

 

좋은 풀이 1

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

 

풀이 2

def solution(s):
    # {{, }}를 제거 후 },{ 으로 나누기
    data = s[2:-2].split("},{")
    # 길이 별로 오름차순 정렬
    data = sorted(data, key=lambda x: len(x))
    answer = []
    for item in data:
        # 각각의 원소로 분류 후
        item = list(map(int, item.split(",")))
        for value in item:
            # 포함되어 있지 않으면 input
            if value not in answer:
                answer.append(value)
    return answer
반응형

댓글