[PS, Algorithm] - 튜플 (2019 KAKAO 개발자 겨울 인턴십, LEVEL 2)

조재현·2022년 12월 1일
0

📒문제



📌풀이

문제를 이해하고 나선 아주 금방 풀었다.

from collections import Counter

def solution(s):
    st_data = list(s.split("},"))
    data = Counter()
    
    for i in range(len(st_data)):
        st_data[i] = st_data[i].replace("{", "").replace("}", "")
        st_data[i] = tuple(st_data[i].split(','))
        
    for c in st_data:
        data += Counter(c) #Counter도 덧셈이 가능하다!
    
    final = data.most_common()
    
    return [int(x[0]) for x in final]

먼저 문자열을 파싱하는 과정인데, 처음에 "},"을 기준으로 문자열을 분리해주면 중괄호는 몇개 남지만 튜플 데이터를 기준으로 끊을 수 있다.

이후 중괄호를 replace를 통해 모두 제거해준다음, 튜플별로 ","을 기준으로 숫자를 끊어주면 튜플을 표현하는 집합을 만들 수 있다.

그 후 Counter를 사용하여 원소들의 개수를 센 다음, 가장 많이 쓰인 원소가 result의 앞에 와야 하므로 most_common함수를 통해 많이 쓰인 값 기준으로 정렬해준다.

s가 {{4,2,3},{3},{2,3,4,1},{2,3}}, 일 경우, Counter(s).most_common 함수는 [('3', 4), ('2', 3), ('4', 2), ('1', 1)] 과 같은 list를 반환한다. 이때 key값은 문자열임에 유의한다.

그 후 list comprehension으로 키값만 int로 변환하여 리스트에 넣는다!

profile
꿈이 많은 개발자 지망생

0개의 댓글