티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/178871
문제이해
- callings에 불리는 선수는 자기 바로 앞의 선수를 앞지르는 것이다.
- 최종 player 순위를 보여주는 리스트를 구하자.
문제풀이
1.index()를 활용한 간단한 풀이 → 시간초과
- 처음에는 단순히 index() 메서드를 통해 callings에 불리는 player의 인덱스를 구하고 이전 선수와 교체를 하는 방식으로 진행을 했다. 하지만 이는 시간초과가 일어나기 좋은 코드였고 이 코드는 시간초과로 실패하였다.
2.딕셔너리 두 개를 사용하는 풀이
- 딕셔너리 하나는 key로는 player의 이름을 value로는 player의 순위를 가지는 딕셔너리이고 다른 하나는 이와 반대로 key로 player의 순위를 value로는 player의 이름을 가지는 딕셔너리이다.
- 이렇게 두 개의 딕셔너리를 둔 이유는 순위를 최신화 하면서 순위별 선수이름까지 동시에 최신화를 시켜주기 위함이다.
def solution(players, callings):
answer = []
ranking1={value: idx for idx, value in enumerate(players)}
ranking2={idx: value for idx, value in enumerate(players)}
for calling in callings:
name=ranking2[ranking1[calling]-1] # 현재 불린 선수의 바로 윗 순위 선수의 이름
# 순위 최신화
ranking1[calling]-=1
ranking1[name]+=1
# 순위별 선수 이름 최신화
ranking2[ranking1[name]]=name
ranking2[ranking1[calling]]=calling
# 순위 오름차순으로 정렬
sorted_dict=dict(sorted(ranking1.items(), key=lambda x:x[1]))
return list(sorted_dict.keys())
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 7568
- 백준#잃어버린 괄호#1541
- 1316번
- 오류
- this()
- 서블릿#Servlet
- 덧칠하기
- HTTP#HTTP특징
- 4673번
- controller
- MVC
- 프로그래머스
- 백준#서강근육맨#20300
- arraylist
- list
- 자바
- 백준
- 파이썬
- 사탕 게임#백준#3085
- Spring
- java
- 백엔드#게시판
- 대충 만든 자판
- 회고
- 1978
- 스프링
- 11659
- springboot
- querydsl
- 게시판#자바#JPA#Entity
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함