1 분 소요

문제 링크

내 풀이

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 함수 이용방법

댓글남기기