728x90
반응형
달리기 경주 (프로그래머스 Lv.1)
https://school.programmers.co.kr/learn/courses/30/lessons/178871
처음으로 푼 코드
def solution(players, callings):
answer = []
for call in callings:
for i, player in enumerate(players):
if call == player :
ept = players[i]
players[i] = players[i-1]
players[i-1] = ept
answer = players
return answer
그러나 테스트 7~테스트13까지 시간초과로 오류가 발생했다.
players의 최대 길이가 5만, callings의 최대길이가 100만이니까. 이러면 최악의 경우 players의 끝 인덱스까지 100만번 순회하므로. 그럼 5만 * 100만이 원하는 값을 반환하는데 소요하고 그중 4만9999 * 100만이 원하는 값을 찾는데 소요한다. . 즉, 값을 찾는시간을 줄여야 한다는 것..
그래서 딕셔너리를 이용해보기로 했다.
그렇게 만든 두번째 코드..!
def solution(players, callings):
answer = []
rank = {}
for i, player in enumerate(players):
rank[player] = i
for call in callings:
fir_index, sed_index = rank[call]-1, rank[call]
players[fir_index],players[sed_index] = players[sed_index],players[fir_index]
rank[players[fir_index]], rank[players[sed_index]] = rank[players[fir_index]]-1,rank[players[sed_index]]+1
answer = players
return answer
players = ["mumu", "soe", "poe", "kai", "mine"]
callings = ["kai", "kai", "mine", "mine"]
print(solution(players, callings))
딕셔너리의 활용법이나 enumerate함수를 까먹어서 서칭을 좀 많이 했지만 결국 완료.
이 부분에 대해 헷갈린 부분은 아래 링크로 정리해두었다.
https://star-ccomputer-go.tistory.com/36
https://star-ccomputer-go.tistory.com/35
728x90
반응형
'Python공부 > 프로그래머스' 카테고리의 다른 글
(Python)서울에서 김서방 찾기(프로그래머스 Lv.1) (0) | 2023.06.12 |
---|---|
(Python)콜라보 추측 (프로그래머스 Lv.1) (0) | 2023.06.12 |
(Python)하샤드 수(프로그래머스 Lv.1) (0) | 2023.06.12 |
(Python)정수 내림차순으로 배치하기(프로그래머스 Lv.1) (0) | 2023.06.12 |
(Python)추억 점수 (프로그래머스 Lv.1) (0) | 2023.06.12 |