나의 개발일지

[프로그래머스] Lv.2 튜플 [ Python, 파이썬] 본문

프로그래머스

[프로그래머스] Lv.2 튜플 [ Python, 파이썬]

YoonJuHan 2023. 8. 30. 19:52
  • 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/64065
  • 문자열 "{{4,2,3},{3},{2,3,4,1},{2,3}}" 에서 [[4, 2, 3], [3], [2, 3, 4, 1], [2, 3]] 처럼 리스트 형식으로 변환하는 과정
  • [[3], [2, 3], [4, 2, 3], [2, 3, 4, 1]] 리스트 길이 순으로 정렬 후 차집합해서 나온 수를 정답에 추가하는 과정
  • 더 좋은 방법은 정규식을 사용?
def solution(s):
    answer = []
    
    # s = "{{4,2,3},{3},{2,3,4,1},{2,3}}" 일 때
    
    s = s.replace("{", "")  # 4,2,3},3},2,3,4,1},2,3}}
    s = s[:-2].split("},")  # ['4,2,3', '3', '2,3,4,1', '2,3']
    
    int_s = [list(map(int, i.split(","))) for i in s] # [[4, 2, 3], [3], [2, 3, 4, 1], [2, 3]]
    
    int_s.sort(key = lambda x : len(x)) # [[3], [2, 3], [4, 2, 3], [2, 3, 4, 1]]
    
    answer.append(int_s[0][0])  # 제일 처음 요소 미리 하나 추가
    
    for i in range(1, len(int_s)):
        n = set(int_s[i]) - set(int_s[i-1]) # i 번째, i-1 번째 요소를 set로 바꿔서 차집합
        answer.append(n.pop())  # {2, 3} - {3} = {2} 가 나오는데 2를 빼서 정답 리스트에 추가
    
    return answer
Comments