sm 기술 블로그
튜플 (2019 카카오 개발자 겨울 인턴십) - 파이썬 본문
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값만 가져와 리스트에 저장한다.
'문제 > 프로그래머스_파이썬' 카테고리의 다른 글
k진수에서 소수 개수 구하기(2022 KAKAO BLIND RECRUITMENT) - 파이썬 (0) | 2022.10.18 |
---|---|
[1차] 뉴스 클러스터링 (2018 KAKAO BLIND RECRUITMENT) - 파이썬 (0) | 2022.10.17 |
[1차] 캐시 (2018 KAKAO BLIND RECRUITMENT) - 파이썬 (0) | 2022.10.09 |
신고 결과 받기(2022 KAKAO BLIND RECRUITMENT) - 파이썬 (0) | 2022.10.08 |
성격 유형 검사하기(2022 KAKAO TECH INTERNSHIP) - 파이썬 (1) | 2022.10.07 |
Comments