프로그래머스 연습문제 - 2019 카카오 개발자 겨울 인턴십 : 튜플

j_wisdom_h·2022년 12월 7일
0

CodingTest

목록 보기
25/58
post-thumbnail

프로그래머스 연습문제 - 2019 카카오 개발자 겨울 인턴십 : 튜플


문제설명


제한사항 & 입출력 예


My Solution

import re

def solution(s):
    answer = []
    
	# 전체 문자열{{...},{...},...{...}}에서 {..}형태 문자열 찾아오기
    s = re.findall(r'\{[^{}]*\}',s) 

    for i in range(len(s)): 
    	# {..} 에서 안의 숫자문자들을 가져오기
        s[i] = re.sub("{|}", "", s[i])
        # 구분자 , 로 나누어 정수형태로 세팅
        s[i] =list(map(int , s[i].split(","))) 

    s.sort(key=lambda x: (len(x), x)) # 길이를 기준으로 정렬

    for i in s:
        if not answer: answer.append(i[0])
        else:
            for j in answer:
                i.remove(j) 
            answer.append(i[0])
    return answer

다른 솔루션

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
  • 파싱을 저렇게 했어야하구나.. 정규식을 안 써도 저렇게면 가능하군..
  • 정렬할때 람다함수없이 바로 key에 len을 넣을 수 있구나
  • 배열의 원소 삭제 없이, 존재 여부를 따져서 할 수도 있군
profile
뚜잇뚜잇 FE개발자

0개의 댓글