문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/64065
풀이
주어진 문자열을 가공하여 배열의 형태로 변환한 후, 이 배열의 각 원소들을 사용하여 가장 많이 튜플 후보군에 나타난 순서를 파악한다. 그리고 최종적으로 그 순서대로 배열에 담아 출력하면 된다.
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값을 출력
'알고리즘 > 알고리즘 문제 풀이' 카테고리의 다른 글
[프로그래머스 Lv.2] 문자열 압축 (Python) (0) | 2024.05.17 |
---|---|
[프로그래머스 Lv.2] 짝지어 제거하기 (Python) (0) | 2024.05.15 |
[프로그래머스 Lv.2] 행렬의 곱셈 (Python) (0) | 2024.05.10 |
[프로그래머스 Lv.2] 거리두기 확인하기 (Python) (0) | 2024.05.09 |
[프로그래머스 Lv.2] 삼각 달팽이 (Python) (0) | 2024.05.07 |