문제 링크
내 풀이
def solution(s):
num_count = {}
s = s.replace('{','').replace('}','').split(',')
s_set = set(s)
for num in s_set:
num_count[int(num)] = s.count(num)
result = sorted(num_count, key = lambda x: num_count[x], reverse = True)
return result
다른 풀이
def solution(s):
# 빈도수를 저장할 딕셔너리를 초기화합니다.
num_count = dict()
# 문자열 s에서 중괄호를 제거하고, 쉼표를 기준으로 문자열을 분리합니다.
s = s.replace("{","").replace("}","").split(",")
for c in s:
# 문자열을 정수로 변환합니다.
c = int(c)
# 딕셔너리에 숫자가 이미 존재하면 빈도수를 증가시키고,
# 그렇지 않으면 새로운 키-값 쌍을 추가합니다.
if c in num_count:
num_count[c] += 1
else:
num_count[c] = 1
# 딕셔너리의 키를 빈도수가 높은 순으로 정렬합니다.
result = sorted(num_count, key=lambda x: num_count[x], reverse=True)
return result
출처: https://1ets-just-do-it.tistory.com/114 [파이썬은 신이야🔥🔥🔥:티스토리]
풀이 해석
- s를 중괄호를 제거하여 최신화하였고
- dict 타입을 활용해 key는 수, value는 빈도수로 나타내었다.
- 이를 동일한 number가 나올때마다 value += 1을 하였고
- 최종적으로 정렬을 lambda함수를 이용해 value값을 기준으로 정렬하였다.
배울 점
- replace의 연속적 사용
- dict 타입을 활용해 수와 빈도수를 나타낸 것
- sorted 함수에서의 lambda 함수 이용방법
댓글남기기