반응형

2019 카카오 개발자 겨울 인턴십 문제입니다.

문제풀이

1. 문제가 잘 이해가 안되는데, 예로 [2,1,3,4]를 설명하면 다음과 같다.

[2,1,3,4]는 {{2},{2,1},{2,1,3},{2,1,3,4}}로 쓸 수 있는데, 이 집합의 순서를 아래와 같이

{{2,1},{2,1,3},{2},{2,1,3,4}} 등으로 바꿀 경우, 이 집합을 통해 [2,1,3,4]를 맞추는 문제이다.

2. 집합의 각 요소를 살펴보면, 2가 4번, 1이 3번, 3이 2번, 4가 1번 등장하는 것을 볼 수 있다.

즉, 많이 순서대로 앞에 위치하는 요소가 된다.

Python Code

1
2
3
4
5
6
7
8
9
10
11
def solution(s):
    s = s[2:-2]
    co = {}
    for tuple in s.split('},{') :
        for t in tuple.split(','):
            tmp = int(t)
            if tmp in co:
                co[tmp] = co[tmp] + 1
            else:
                co[tmp] = 1
    return sorted(list(co.keys()), key = lambda x : co[x], reverse = True)
cs

Line 4 : 각 집합을 꺼냅니다.

Line 5 : 각 집합의 요소를 꺼내 int로 변환해줍니다(Line 6).

Line 3, 7 - 10 : co는 각 요소가 key, 등장하는 횟수가 value인 딕셔너리 자료구조입니다.

Line 11 : co의 key들을 등장 횟수를 기준으로 정렬하여 리스트로 반환합니다.

 

문제링크

 

코딩테스트 연습 - 튜플

"{{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

 

반응형

+ Recent posts