반응형
🔺 문제
1459번: 걷기
세준이는 학교에서 집으로 가려고 한다. 도시의 크기는 무한대이고, 도시의 세로 도로는 모든 정수 x좌표마다 있고, 가로 도로는 모든 정수 y좌표마다 있다. 세준이는 현재 (0, 0)에 있다. 그리고 (
www.acmicpc.net
🔺 코드
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
29
30
31
32
33
|
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
long X = Long.parseLong(st.nextToken());
long Y = Long.parseLong(st.nextToken());
long W = Long.parseLong(st.nextToken());
long S = Long.parseLong(st.nextToken());
long tmp1, tmp2, tmp3;
// 1. 평행이동만 할 때
tmp1 = (X + Y) * W;
// 2. 대각선 이동만 할 때
tmp2 = 0;
if((X + Y) % 2 == 0) {
tmp2 = Math.max(X, Y) * S;
}
else {
tmp2 = (Math.max(X, Y) - 1) * S + W;
}
// 3. 반반 섞임 (최대한 대각선 이동 -> 나머지는 평행이동)
tmp3 = (Math.min(X, Y)) * S + (Math.abs(X - Y)) * W;
System.out.println(Math.min(tmp1, Math.min(tmp2, tmp3)));
}
}
|
cs |
✅ 해결 아이디어
✔ 그리디
- 3가지 경우의 수를 생각해 줘야함
1) 평행이동만 하는 경우
2) 대각선 이동만 하는 경우
└ (X + Y)가 짝수인 경우
└ (X + Y)가 홀수인 경우
3) 대각선 이동했다가, 평행이동하는 경우
💥 유의사항
• 정수형을 잘 확인해야 한다
⇨ int형으로 하면 연산을 다 할 수 없으므로 long형을 사용해야 함.
🔺 다른 풀이들
- 다들 비슷하심
💬 느낀 점
2번째 대각선 이동만 하는 경우를 생각하지 못 하고 틀렸다....ㅠ
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
백준 No.1459 걷기 - JAVA
문제 세준이는 학교에서 집으로 가려고 한다. 도시의 크기는 무한대이고, 도시의 세로 도로는 모든 정수 x좌표마다 있고, 가로 도로는 모든 정수 y좌표마다 있다. 세준이는 현재 (0,0)에 있다. 그
jaewoo2233.tistory.com
[파이썬, 자바] BOJ_1459(걷기)
문제 https://www.acmicpc.net/problem/1459 1459번: 걷기 세준이는 학교에서 집으로 가려고 한다. 도시의 크기는 무한대이고, 도시의 세로 도로는 모든 정수 x좌표마다 있고, 가로 도로는 모든 정수 y좌표마
buzz-program.tistory.com
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 14889번: 스타트와 링크 (0) | 2023.08.24 |
---|---|
[백준/JAVA] 11052번: 카드 구매하기 (0) | 2023.08.23 |
[백준/JAVA] 9663번: N-Queen (0) | 2023.08.22 |
[백준/JAVA] 1759번: 암호 만들기 (0) | 2023.08.22 |
[백준/JAVA] 2885번: 초콜릿 식사 (0) | 2023.08.21 |