알고리즘/알고리즘 문제 풀이
[프로그래머스 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값을 출력