Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ChatGPT
- 동전교환알고리즘
- 프로그래머스
- 스프링
- 성장형마인드셋
- 제너릭메서드
- SQ3R
- string메서드
- 향상된for문
- 프로젝트
- 백준
- 스레드동기화
- Spring
- 자바
- 참조변수타입변환
- 99클럽
- 루트사용자
- API명세서
- API
- 재귀적사고
- staging_area
- SQL
- 배열탐색
- 코딩테스트
- Java
- 네이티브애플리케이션
- 날씨API
- 파일사용권한
- 4A피드백
- openapi
Archives
- Today
- Total
개발 공부용
[Leetcode] 506. Relative Ranks 본문
문제
배열 score를 보고 순위를 확인하라
1위, 2위, 3위는 각각 금메달, 은메달, 동메달이 되며 나머지는 순위를 출력한다.
입력
- 점수가 적힌 배열 score(1<=len(sxore)<=10,000)
- 0<=점수<=1,000,000이며 같은 점수는 없음
출력
- 메달 혹은 순위가 적힌 배열
풀이방법
- 각 점수를 딕셔너리의 key로 선언
- score를 힙에 정렬한 뒤 한 개씩 pop하면서 순위 부여
- 1~3까지 메달 부여하고 나머지는 순위로
- score 순서대로 딕셔너리에서 value 찾아 result 리스트에 넣음
- result 출력
작성한 코드
import heapq
class Solution:
def findRelativeRanks(self, score: List[int]) -> List[str]:
score = [-i for i in score]
origin_score = []
origin_score = score.copy()
result_dic = {i:"0" for i in score}
result = []
heapq.heapify(score)
if(len(score)!=0):
result_dic[heapq.heappop(score)]="Gold Medal"
if(len(score)!=0):
result_dic[heapq.heappop(score)]="Silver Medal"
if(len(score)!=0):
result_dic[heapq.heappop(score)]="Bronze Medal"
place = 4
for _ in range(len(score)):
result_dic[heapq.heappop(score)]=str(place)
place+=1
result = [result_dic[key] for key in origin_score]
return result
if문 3번 반복한 부분도 좀 마음에 안들고 딕셔너리도 괜히 쓴 것 같아서 나중에 다시 풀 생각...
'코딩 테스트 > 99클럽 TIL' 카테고리의 다른 글
[백준] 28107 - 회전초밥 (0) | 2025.02.15 |
---|---|
[백준] 14235 - 크리스마스 선물 (0) | 2025.02.13 |
[프로그래머스] 힙 - 더 맵게 (0) | 2025.02.11 |
[백준] 4949 - 균형 잡힌 세상 (0) | 2025.02.08 |
[백준] 26043 - 식당 메뉴 (0) | 2025.02.07 |