티스토리 뷰

https://www.acmicpc.net/problem/1459

 

1459번: 걷기

세준이는 학교에서 집으로 가려고 한다. 도시의 크기는 무한대이고, 도시의 세로 도로는 모든 정수 x좌표마다 있고, 가로 도로는 모든 정수 y좌표마다 있다. 세준이는 현재 (0, 0)에 있다. 그리고 (

www.acmicpc.net

 

[소스 코드]

 

x, y, w, s = map(int, input().split())

cost1 = (x + y) * w                                                     # 1
cost2 = max(x, y) * s if (x + y) % 2 == 0 else (max(x, y) - 1) * s + w  # 2
cost3 = min(x, y) * s + abs(x - y) * w                                  # 3

print(min(cost1, min(cost2, cost3)))

"""
1. 가로, 세로로 이동하는 경우
모든 경로를 가로, 세로로 이동해야하므로 x와 y를 더하면 된다.

2. \, / 으로 이동하는 경우
x와 y의 합이 짝수일 경우 \와 /만으로 이동할 수 있다.
x와 y의 합이 홀수일 경우 \와 /로 최대한 이동 후 가로 혹은 세로로 한 칸 이동한다.

3. \ 으로 최대한 많이 이동 후 가로, 세로로 이동
x와 y중 작은 값을 구한다. 그럼 그 수가 대각선으로 이동한 수가 된다.
나머지는 가로 혹은 세로로 이동한다.

"""

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/02   »
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
글 보관함