DevKim

[Python] 2019 카카오 개발자 겨울 인턴십 - 튜플 본문

알고리즘 PS

[Python] 2019 카카오 개발자 겨울 인턴십 - 튜플

on_doing 2021. 3. 3. 17:10
728x90

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

[ 알고리즘 ]

구현

 

[문제 접근]

문자열 통째로 들어오는 s를 어떻게 처리해주느냐가 관건인 문제

{ , } 를 기준으로 split 해주는 방법과 , { 를 기준으로 split 해준 후 파이썬 정규식을 이용하여 문자열을 처리하는 방법이있다.

 

요즘 정규식 re를 조금씩 공부하는 중인데 이 문제는 간단한 문자열 처리였지만, 복잡한 문자열 처리는 아직은 조금 헷갈린다.

 

[코드]

 

* split 만 사용한 풀이 *

def solution(s):
    answer = []
    
    s=s[2:-2]
    List=s.split('},{')
    
    result=[]
    
    for i in List:
        L=i.split(',')
        result.append(L)
        
    result.sort(key=len)
        
    for i in result:
        for j in i:
            if int(j) not in answer:
                answer.append(int(j))
    
    return answer

* 정규식 re를 사용한 풀이 *

import re
def solution(s):
    answer=[]

    s=s[1:-1]
    s=s.split(',{')
    s.sort(key=len)
    p=re.compile('\d+')

    for i in s:
        data=p.findall(i)
        for num in data:
            if int(num) not in answer:
                answer.append(int(num))
    
    return answer
728x90
Comments