일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- softeer
- 공부일지
- 회고
- 데이터베이스
- 백준알고리즘
- 파이썬
- 정보처리산업기사
- 1과목
- 코딩봉사
- SQL
- 스프링
- MYSQL
- C++
- 백준
- SW봉사
- python
- CJ UNIT
- kotlin
- 프로그래머스
- 코틀린
- 알고리즘
- programmers
- 시나공
- 문제풀이
- 자바
- BFS
- java
- 백준 알고리즘
- 코딩교육봉사
- 소프티어
- Today
- Total
JIE0025
[구름][현대모비스][예선] Dead or Arrive _ 파이썬(python) 본문
[현대모비스][예선] Dead or Arrive
문제는 긴데 간단한 문제이다.
문제 한문장 요약 : 모비스팀과 Mars Killaz팀의 차가 있는데, Mars Killaz 반칙을 쓰려다가 실패해 해당 팀의 차량끼리만 서로 부딪히게 되었고, 그중에서도 결승선을 통과한 차들이 있다. 이 차들의 번호의 합을 출력하라
핵심은 다음 3문장이다.
# 속도가 다르면 결승선에 들어온다
# 속도가 같은데 내구도가 다르면 내구도가 가장 높은 차량만 들어온다.
# 속도와 내구도가 모두 같은 차량이 여러대 존재하면 차량번호가 가장 큰 차량만 결승선에 들어올 수 있다.
풀이
딕셔너리를 이용하면 빠르게 필터링 가능할것 같았다.
0) v 는 속도, w는 내구도이다. for문을 통해서 입력을 받는다. i+1은 차량의 번호이다.
1) 입력되는 속도 v가 현재까지 존재했는지 체크한다. 만약 cars 딕셔너리에 없으면 처음 들어온 특정 속도의 차 이므로 cars에 내구도를, res에 차의 번호를 넣어준다.
2) 만약 이미 존재하는 속도(v)인 경우엔, 내구도를 비교한다. 지금까지 기록된 내구도보다 현재 입력된 차의 내구도가 더 클 경우 cars와 res 모두 업데이트 해준다. (if cars[v] < w:)
3) 속도와 내구도가 모두 같은 차량이 여러대 존재할 경우엔 차량번호가 큰 차량만 들어와야하므로, 조건을 크거나 같은지로 바꿔준다. (if cars[v] <= w:) 뒤에 입력받은 차량은 번호가 더 크므로, 내구도까지 같을경우 자동적으로 여기에서 업데이트 된다.
4) 마지막으로 res에 있는 차의 번호들을 다 합쳐서 출력해주면 끝
정답코드
import sys
input = sys.stdin.readline
n = int(input())
cars = dict()
res = dict()
for i in range(n):
v , w = map(int,input().split())
if v not in cars:
cars[v] = w
res[v] = i+1
else: #key값 있음
if cars[v] <= w:
cars[v] = w
res[v] = i+1
answer = 0
for k, v in res.items():
answer += v
print(answer)
'Algorithm > 구름' 카테고리의 다른 글
[구름][알고리즘 먼데이][6주차] 제곱암호 : 파이썬(python) (0) | 2022.11.20 |
---|---|
[구름][알고리즘 먼데이][2주차] 폭탄구현하기 : 파이썬(python) (0) | 2022.11.06 |
[구름][난이도1] 의좋은 형제 : 자바(Java) (0) | 2022.10.30 |
[구름][난이도1] 의좋은 형제 : 파이썬(python) (0) | 2022.10.30 |