sm 기술 블로그

튜플 (2019 카카오 개발자 겨울 인턴십) - 파이썬 본문

문제/프로그래머스_파이썬

튜플 (2019 카카오 개발자 겨울 인턴십) - 파이썬

sm_hope 2022. 10. 10. 12:59
def solution(s):
    answer = []
    tmp = dict()
    s = s.replace("{","")
    s = s.replace("}","")
    for i in s.split(",") :
        try :
            tmp[i] += 1
        except :
            tmp[i] = 1

    for key,val in sorted(tmp.items(), key=lambda x: x[1], reverse=True):
        answer.append(int(key))

    return answer

문제요약

입력이 문자열로 된 집합이다. 빈도가 많은 순으로 튜플을 만들어라.

설명

문자열로 된 집합에서 순서에 상관없이 튜플을 만든다면 크게 어렵지 않다.

하지만 빈도수에 따른 결과를 내놓는 것이 필요하기 때문에 정렬을 써야한다.

주의점

중복 제거라는 생각으로 set을 사용 할 까라는 생각을 할 수 있지만.

문제에서 순서를 보장해야한다고 했다.

즉, 중복은 허용하지 않으며 순서가 보장되지 않는 집합은 사용할 수 없다.

 

    tmp = dict()
    s = s.replace("{","")
    s = s.replace("}","")
    for i in s.split(",") :
        try :
            tmp[i] += 1
        except :
            tmp[i] = 1

빈도는 딕셔너리를 이용하여 확인할 것이다.

입력되는 문자열 집합은 "{{3},{2,3}}" 과 같은 형태로 원소를 뽑기위해 replace와 split을 사용하였다.

 

딕셔너리가 비어있는데 +=1을 할 경우 에러가 발생하기 때문에 에러 방지를 위해  try except문을 사용하였다.

 

    for key,val in sorted(tmp.items(), key=lambda x: x[1], reverse=True):
        answer.append(int(key))

value를 기준으로 내림차순 정렬을 진행한다.

결과물에서 value값만 가져와 리스트에 저장한다.

 

 

Comments