관리 메뉴

JIE0025

[구름][현대모비스][예선] Dead or Arrive _ 파이썬(python) 본문

Algorithm/구름

[구름][현대모비스][예선] Dead or Arrive _ 파이썬(python)

Kangjieun11 2022. 10. 20. 12:35
728x90

[현대모비스][예선] Dead or Arrive


https://level.goorm.io/exam/152114/%ED%98%84%EB%8C%80%EB%AA%A8%EB%B9%84%EC%8A%A4-%EC%98%88%EC%84%A0-dead-or-arrive/quiz/1

구름LEVEL

코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입니다. 기업에서 선호하는 C, C++, 파이썬(Python), 자바(Java), 자바스크립트(Javascript) 이

level.goorm.io





문제는 긴데 간단한 문제이다.

문제 한문장 요약 : 모비스팀과 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)