[프로그래머스 Lv2] 튜플(python)

이진규·2022년 3월 21일
1

프로그래머스(PYTHON)

목록 보기
49/64

문제

https://programmers.co.kr/learn/courses/30/lessons/64065

나의 코드 (답안참조)

"""
1. 아이디어

2. 시간복잡도

"""

def solution(s):
    
    # 문자열로 s값을 준것에서 착안하여 "{ , }" 3 문자를 없애고 숫자는 정수 값으로 리스트에 넣어준다.
    s = s.replace("{", "")
    s = s.replace("}", "")
    s = list(map(int, s.split(',')))
    
    hash = dict() # 해시를 이용해서 숫자의 빈도수를 계산한다.
    
    for i in s:
        
        if i in hash:
            hash[i] += 1
        else:
            hash[i] = 1
    
    # value값을 기준으로 내림차순 정렬한다 (많이 나온 숫자가 제일 앞자리 부터 차지한다. - 예시 잘 보기)
    tmp = sorted(hash.items(), key = lambda x : x[1], reverse=True)
    
    # value값을 기준으로 내림차순 정렬 됐으면 순서대로 key값을 넣어준다.
    answer = []
    for i, j in tmp:
        answer.append(i)
        
    return answer
    

설명

코드에 주석을 달아 놓아서 별 설명은 없겠지만 계속 풀어 봐야할 필요성을 느낌
그리고 정규표현식을 이용해서 다시 한번 풀어 봐야함

다시 풀이한 코드 (설명 추가)


def solution(s):
    
    s = s.replace("{", "")
    s = s.replace("}", "")
    s = s.split(',')
    s = list(map(int, s))
    
    hash = dict()
    
    for i in s:
        
        if i in hash:
            hash[i] += 1
        else:
            hash[i] = 1
    
    # print(hash) # 예시 1 결과 : {2: 4, 1: 3, 3: 2, 4: 1}
    hash = sorted(hash.items(), key = lambda x : x[1], reverse=True)
    # print(hash) # 예시 1 결과 : [(2, 4), (1, 3), (3, 2), (4, 1)]
    """
    1. sorted()는 매개변수로 들어온 이터러블한 데이터를 새로운 정렬된 리스트로 만들어서 
    반환 해주기 때문에 리스트 형태로 바뀐 것임.
    2. hash.items()는 딕셔너리의 키와 값의 쌍을 받는 함수
    """
    
    answer = []
    for x, y in hash:
        answer.append(x)
    
    return answer

참고자료

profile
항상 궁금해하고 공부하고 기록하자.

0개의 댓글