알고리즘/알고리즘 문제 풀이

[프로그래머스 Lv.2] 튜플 (Python)

용꿀 2024. 5. 13. 01:04

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/64065

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이

주어진 문자열을 가공하여 배열의 형태로 변환한 후, 이 배열의 각 원소들을 사용하여 가장 많이 튜플 후보군에 나타난 순서를 파악한다. 그리고 최종적으로 그 순서대로 배열에 담아 출력하면 된다.

def solution(s):
    number_dict = {} # 튜플 후보군에 특정 숫자가 몇 번 나타나는지 저장할 딕셔너리
    
    for tuple in s[2 : -2].split("},{"): # 문자열 s 내에 존재하는 튜플 문자열들을 분리
        for n in tuple.split(","): # 튜플 문자열을 ","을 기준으로 split하여 배열로 변경
            if n not in number_dict: # n이 딕셔너리의 key로 존재하지 않는다면
                number_dict[n] = 1 # 1을 value로 추가
            else: number_dict[n] += 1 # 이미 있다면 value에 1을 더하기
        
    answer = sorted(number_dict.items(), key=lambda x: x[1], reverse=True) # x[1], 즉 딕셔너리의 value를 기준으로 내림차순으로 정렬
        
    return [int(a[0]) for a in answer] # 정렬한 딕셔너리의 각 원소의 0번째 인덱스의 값, 즉 key값을 출력