반응형
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 |
Tags
- 주식
- 상한가 분석
- 주식 분석
- 백준
- 손에 잡히는 경제
- Programmers
- 상한가 이유
- 손경제 요약
- 이진우
- 파이썬
- 급등주 분석
- 이진우의 손에 잡히는 경제
- Python
- 자바
- 상한가
- 경제뉴스 요약
- 프로그래머스
- 코딩테스트
- 주식 상한가
- 손경제
- 테마주
- 급등 이유
- java
- 코테
- 경제뉴스
- 급등주
- 손에 잡히는 경제 요약
- 경제
- boj
- 알고리즘
Archives
- Today
- Total
Completion over Perfection
프로그래머스 - 달리기 경주 (Python 3 파이썬 3) 본문
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/178871
프로그래머스에서 난이도 1단계 문제인 달리기 경주입니다.
처음 문제를 보고,
어? 단순하게 딕셔너리 하나 선언한 다음에 업데이트 계속 시켜주면 되겠다 싶었는데,
시간초과 나는 예제가 5~6개가 나왔습니다.
그래서 단순히 for문을 돌려서 하면 안되고 player들의 이름을 key로 가지는 딕셔너리 1개,
각 player들의 순서를 key값으로 가지는 딕셔너리 1개를 각각 선언해서 2개의 딕셔너리로 풀면 잘 풀립니다.
간단히 설명해보자면,
{"mumu": 1, "soe": 2, "poe" : 3, "kai": 4, "mine": 5}
이런식으로 이름을 key값으로 갖고 value에는 순서를 가지는 딕셔너리 1개와
{1: "mumu", 2: "soe", 3: "poe", 4: "kai", 5: "mine"}
이런식으로 첫번째 딕셔너리와는 반대로 순서를 key값으로 갖고 value에는 이름을 가지는 딕셔너리 1개를 선언합니다.
그리고 순서가 바뀔때마다 저 두 개의 딕셔너리를 각각 업데이트 해주고,
마지막에 answer 배열에 순서를 key값으로 가지는 딕셔너리에서 value를 추출해서 붙여주면 답이 됩니다.
자세한 내용은 아래 코드에서 확인해보세요.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
def solution(players, callings):
answer = []
dict_name = {}
dict_order = {}
for i in range(len(players)):
dict_name[players[i]] = i
dict_order[i] = players[i]
for calledName in callings:
# calledName = "kai"
# 바꿀 대상이 되는 인덱스와 이름을 가져옴
calledNum = dict_name[calledName] # 4 (kai의 인덱스)
targetName = dict_order[calledNum-1] # "poe" (스위칭할 대상의 이름)
targetIdx = calledNum-1 # 3 (poe의 인덱스)
dict_name[calledName] -= 1 # kai의 값이 4에서 3으로 바뀜
dict_order[dict_name[calledName]] = calledName # 3번째 값이 kai로 바뀜
# 원래 3번째 자리에 있던 poe의 값을 4로 바꿈
dict_name[targetName] = calledNum
dict_order[calledNum] = targetName
for player in dict_order.values():
answer.append(player)
return answer
|
cs |
반응형
'파이썬 (Python)' 카테고리의 다른 글
프로그래머스 - 최고의 집합 (파이썬3 Python3) (0) | 2023.08.19 |
---|---|
프로그래머스 - 추억 점수 (파이썬3 Python3) (0) | 2023.08.15 |
Introducing to Python Django Framework (0) | 2023.01.29 |
파이참 Pycharm 인터프리터 Interpreter 설정 오류 해결 (2) | 2022.10.14 |
파이썬 개행문자 (줄바꿈) 치환 / 변환하기 (\n) (0) | 2022.07.20 |
Comments