728x90
<문제 링크>
https://www.acmicpc.net/problem/1459
<문제 풀이>
- 한 블록의 2배 값이 대각선보다 작으면 최종 목적지(x+y) * 한 블록
- 대각선이 더 빠르다면,
- x와 y의 차가 짝수라면, {대각선*(x, y 중 작은 값)} + {(한 블록, 대각선 중 작은 값)*(x, y 차)}
- 홀수라면, {대각선*(x,y 중 작은 값)} + {(한 블록, 대각선 중 작은 값)*((x, y 차)-1)+한 블록}
<코드>
'''입력예제
4 2 3 10
4 2 3 5
2 0 12 10
25 18 7 11
24 16 12 10
10000000 50000000 800 901
135 122 43 29
'''
x,y,w,s = map(int,input().split())
if (w*2)<s:
print((x+y)*w)
else:
if abs(x-y)%2==0:
print((s*min(x,y))+min(w,s)*abs(x-y))
else:
print((s*min(x,y))+(min(w,s)*(abs(x-y)-1)+w))
<고쳐야 할 점>
- (0,0)에서 (2,2)로 갈 때, 대각선 2번과 한 블록 2번은 같이 도착할 수 있으므로, 둘 중 더 작은 값으로 계산해야 함
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[서로소집합] CCC '탑승구' (Python) (0) | 2021.12.20 |
---|---|
[그래프 이론] 이취코 393p '여행 계획' (Python) (0) | 2021.12.20 |
[기타] 백준 1254번 '팰린드롬 만들기' (Python) (0) | 2021.12.15 |
[연결리스트/트리구조] 프로그래머스 L2 '더 맵게' (Python) (0) | 2021.12.15 |
[연결리스트/트리구조] 프로그래머스 L3 '이중우선순위' (Python) (0) | 2021.12.15 |