[goormlevel] Dead or Arrive

J. Hwang·2024년 7월 4일
0

coding test

목록 보기
8/108

문제

가상의 배틀로얄 카 레이싱 대회 Dead or Arrive에 출전한 팀 모비스는 이 대회를 완주하기 위해 가장 안전한 차량을 만들려고 한다. 79GHz 코너 레이더와 ADAS 센서를 설치해 장애물과 경쟁자 차량을 피해 안전하게 결승선까지 도달할 수 있도록 하였다.

하지만 팀 모비스의 경쟁팀인 팀 Mars Killaz는 DOA대회에서 모든 반칙이 허용되는 만큼 n대의 차량을 풀어 팀 모비스의 차량을 추격하기로 한다. 수소연료전지 파워팩을 부착하고 있는 팀 모비스의 차량은 Mars Killaz의 차량은 모두 피해 갔지만, Mars Killaz의 차량은 서로 부딪쳐 아수라장이 된 채로 결승선에 도착했다. DOA대회가 종료되고, Mars Killaz는 팀 차량이 모두 결승선에 도착하지 못했다는 사실을 발견했다. 그래서 결승선에 도착한 차량을 찾아 실험을 하기로 했다. Mars Killaz의 차량은 각 차량마다 v의 속도와 w의 내구도를 가지고 있다.

때문에 서로 다른 속도의 차량은 부딪침 없이 결승선에 들어올 수 있다. 그러나 속도가 같은 차량이 여러 대가 있다면, 그 중 내구도가 가장 높은 차량만 결승선에 들어올 수 있다. 속도와 내구도가 모두 같은 차량도 여러 대가 존재한다면, 그 중 차량 번호가 가장 큰 차량만 결승선에 들어올 수 있다.

Mars Killaz의 차량 중 결승선에 들어온 차량의 번호의 합을 출력하시오.


입력

첫 번째 줄에 Mars Killaz의 차량의 숫자 정수 n(1 \leq n \leq 2,000,000)이 주어진다.
두 번째부터 n줄에 걸쳐서 각 줄에 Mars Killaz의 차량의 특성이 주어진다.
i+1번째 줄은 i번째 차량의 정보이다. 각 차량의 특성은 속도의 값인 정수 v(1 \leq v \leq 1,000)와 차량의 내구도 w(1 \leq w \leq 1,000,000,000)이 주어진다.


내 풀이

input1 = input()

carinfo = []
for i in range(int(input1)):
	carinfo.append(list(map(int, input().split())))
	
# add car number	
for i in range(len(carinfo)):
	carinfo[i].append(i+1)
	
# velocity is the chain between durability & car number
velocity = {}
carnum = {}
for car in carinfo:
	if car[0] not in velocity:
		velocity[car[0]] = car[1]
		carnum[car[0]] = car[2]
	else:
		if velocity[car[0]] <= car[1]:
			velocity[car[0]] = car[1]
			carnum[car[0]] = car[2]
		else:
			pass
	
print(sum(carnum.values()))

코멘트

  • point 1 : 차량 번호를 별도로 언급하거나 입력하지 않아서 차례대로 1, 2, 3, ... 번 차량 번호로 지정해는데 정답이었다.
  • point 2 : 결국 또 복잡한 정렬에서 막혀서 다른 풀이를 참고했다. References에서 참고한 페이지가 너무도 간단명료하게 풀어서 더 설명이 필요하지 않을 정도였다ㅠ 속도를 내구도와 차량 번호 정보의 연결 고리로 사용해서 velocity 딕셔너리에는 속도 : 내구도 정보를 저장하고 carnum 딕셔너리에는 속도 : 차량 번호 정보를 저장했다. 그래서 지금까지 겹치는 속도가 없다면 그대로 정보를 넣도록 했고 겹치는 속도가 있다면 내구도를 비교해서 기존 내구도가 현재 내구도보다 작거나 같다면 내구도를 업데이트 하도록 했다. 작거나 같을 때 업데이트하는 이유는 내구도도 같을 때에는 차량 번호가 큰 것으로 해야 하기 때문에 이는 순서대로 진행되는 반복문의 조건에 딱 맞다.

References

https://level.goorm.io/
https://velog.io/@charbs0701/python-%EA%B5%AC%EB%A6%84-Dead-or-Arrive

profile
Let it code

0개의 댓글