본문 바로가기

Algorithm/프로그래머스 연습 문제

프로그래머스 / 코딩 테스트 / 튜플

문제 설명

 

 

 

문제 해결

 

일단 입력으로 여러 집합이 담긴 집합을 표현한 문자열을 준다.

즉 해당 문자열들을 파싱해야 한다.

 

파싱이 완료되면 정렬되지 않은 리스트를 원소의 길이에 따라서 정렬해줘야 한다.

리스트와 리스트 사이의 '-' 연산자는 지원되지 않는다.

리스트를 집합으로 전환하여 차집합을 구하고 다시 리스트로 구하여 해당 숫자에 접근할 수 있도록 인덱싱한다.

 

def solve(s):
    s = s.split('},')
    for i in range(len(s)):
        s[i] = s[i].replace('{','')
        s[i] = s[i].replace('}','')
        s[i] = [int(x) for x in s[i].split(',')]
        
    s = sorted(s,key=lambda x : len(x))
    
    res = [s[0][0]]
    for i in range(1,len(s)):
        res.append((list(set(s[i]) - set(s[i-1]))[0]))
        
    return res

def solution(s):
    answer = solve(s)
    return answer