소스 코드
T = int(input())
for tc in range(1,1+T):
# 종로 거리의 길이, 말의 수
d,n = map(int,input().split())
# [말 위치, 속도]
horse = [list(map(int,input().split())) for _ in range(n)]
# 종로 거리가 끝나는 곳에서 가까운 순으로 정렬
horse.sort(key=lambda x : x[0], reverse=True)
# 말의 이동시간
cnt = 0
for q in horse:
# (종로 거리의 길이 - 말의 위치)/말의 속도 == a
# a가 현재 저장된 이동 시간보다 크면 cnt 값 바꾸기
# 말을 추월하거나 자율주행차의 속도를 늦추지 않기 위해서는 말과 만나면 안 된다
# cnt에 이동시간이 가장 긴 말의 이동시간을 저장해둬야 함
if (d-q[0])/q[1] > cnt:
cnt = (d-q[0])/q[1]
# 가능한 최대 속도 = 거리의 길이 / 말의 이동시간
res = d/cnt
# {:0<9} 이란, 출력을 위한 9칸을 만들고 해당 칸에 res를 출력
# 만일 res가 9칸이 안 된다면 나머지(오른쪽으로)는 0으로 채우기
print('#{} {:0<9}'.format(tc,res))
해결 방법
1. 말이 종로 거리의 끝에 도착하는 최장시간을 구해야 함
(자율주행차의 최대 속도는 말의 최장 이동시간을 기준으로 정할 수 있기 때문)
2. 말끼리 만날 경우, 앞선 말의 뒤에 서는 것이 아닌 나란히 선다고 이해해야 함
(2번째 tc의 경우 뒤에 선다고 생각하면 20.2가 나올 수 없음)
3. 출력 값은 정수+소수 9자리이다
(만일 정수의 값이 100,000인 경우 출력은 100,000.000이고, 정수가 0 소수가 0.1인 경우 출력은 0.00000001 이 될 것임)
느낀 점
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.SWEA' 카테고리의 다른 글
[SWEA 코딩] S/W 문제해결 기본 Contact - PYTHON #1238 (0) | 2021.04.10 |
---|---|
[SWEA 코딩] S/W 문제해결 기본 계산기2 - PYTHON #1223 (0) | 2021.04.09 |
[SWEA 코딩] 테네스의 특별한 소수 - PYTHON #4698 (0) | 2021.03.20 |
[SWEA 코딩] 진수의 홀수 약수 - PYTHON #5213 (0) | 2021.03.19 |
[SWEA 코딩] 세제곱근을 찾아라 - PYTHON #5688 (0) | 2021.03.18 |