본문 바로가기

⏳ 알고리즘/python 알고리즘 문제 풀이

프로그래머스 - LV2. 튜플(2019 카카오 개발자 겨울 인턴십)

문제 

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

 

코드

1) 두개의 배열(arr1, arr2)을 비교하여 arr2에 없는 arr1의 원소를 반환

def solution(s):    
    sets = s[2:-2].split('},{')
    for i in range(len(sets)):
        sets[i] = list(map(int,sets[i].split(',')))
        sets[i].sort()
        set(sets[i])
    
    sets.sort(key=lambda x:len(x))
    
    answer = sets[0]
    for i in range(1, len(sets)):
        for j in range(len(sets[i])):
            if sets[i][j] not in sets[i-1]:
                answer.append(sets[i][j])
        
    return answer

 

다른 사람의 풀이

1) 정규표현식과 collections모듈의 Counter 이용

import re
from collections import Counter

def solution(s):
    s = Counter(re.findall('\d+', s))
    return list(map(int, [k for k, v in sorted(s.items(), key=lambda x: x[1], reverse=True)]))

리스트 컴프리헨션을 이용하여 간단하고 가독성이 좋게 만든것도 인상적인 코드였다!

 

리스트 컴프리헨션에 대해 자세히 알아보기