[Python] 프로그래머스 lv2 (2019 카카오 개발자 겨울 인턴쉽) - 튜플
2024. 1. 31. 19:52ㆍ알고리즘/문제풀이
[Python] 프로그래머스 lv2 - 튜플
코딩테스트 연습 - 튜플 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
사실문제를 이해하는데 되게 오래 걸렸던 문제였다. 정확히 말하면 출력값을 지정하는 부분에서 오래 걸렸다. 주어진 문자열 튜플 중에서 나오는 원소들을 리스트에 넣어라. 이때 넣어지는 원소는 중복값이 들어가면 안 된다라는 점이었다. 다만 출력의 방식에서 문제가 생겼다. 출력값 result를 보면 순서가 정해져 있었는데 해당 순서를 어떤 기준을 통해 열거되어있는지를 찾아야 하는데 문제를 읽었을 때 기준을 못 찾았기 때문이다. 후에 질문하기 및 구글링을 했을 때 출력되는 기준은 주어진 튜플에서 등장하는 빈도수를 의미하는 것을 알았고 알게 된 뒤에야 문제를 풀 수 있었다.
- 문자열로 이루어진 입력값이 존재
- 이때 문자열은 중복되는 원소가 없는 튜플을 표현
- 출력값은 중복되는 원소가 없이 n개의 원소를 넣어야한다.
문제 풀이
문제를 풀 때 생각한 방법은 두 가지였다. 이는 출력값을 어떻게 표현해야 할지 몰랐던 시기를 기준으로 나눠진다.
- 중복되는 원소가 존재하면 안 되므로 set을 사용하여 풀자
- 주어진 문자열을 정리하여 set으로 변환하여 중복된 값을 제거한 뒤 리스트로 반환하는 풀이
- 출력값의 기준이 빈도 수가 높은 순서라는 것을 알게 된 뒤
- 주어진 문자열을 똑같이 정리를 하되 dictionary를 사용하는 방법
- dictionary를 통해 빈도수를 체크한 뒤 리스트화 및 정렬
- 주어진 문자열을 똑같이 정리를 하되 dictionary를 사용하는 방법
def solution(s):
answer = []
te = ["{","}"]
for i in te:
s = s.replace(i,"")
s =s.split(",")
dic =dict()
for i in s:
i = int(i)
if i not in dic:
dic[i]=1
else:
dic[i]+=1
answer = sorted(dic, key=lambda x:dic[x],reverse=True)
return answer
1의 경우 빈도 수 체크가 불가능하기에 dictionary 방법으로 변경하여 풀이를 진행하였다. 다음부터는 문제를 풀 때 이번 문제처럼 기준점이 주어지지 않는 경우가 존재하면 입력값에서 기준점을 찾는 것도 생각을 해봐야겠다는 것을 알았다.
'알고리즘 > 문제풀이' 카테고리의 다른 글
[Python] 프로그래머스 lv3 - 가장 먼 노드 (0) | 2024.02.08 |
---|---|
[Python] 프로그래머스 lv2 - 뉴스 클러스터링 (0) | 2024.02.01 |
[Python] 프로그래머스 lv2 - 타겟 넘버 (1) | 2024.01.03 |
[Python] 프로그래머스 lv2 - 소수 찾기 (1) | 2024.01.03 |
[Python] 프로그래머스 lv2 - 두 큐 합 같게 만들기 (2) | 2024.01.02 |