반응형
🔺 문제
🔺 코드
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 |
(참고)
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/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 |