1. ๋ฌธ์ ์ค๋ช ๐
2. ์ ๊ทผ ๋ฐฉ์ ๐๏ธ
KEY WORD
: GREEDY ALGORITHM
- (1) ๋ชฉ์ ์ง์ x์ถ ํน์ y์ถ์ ์ผ์นํ ๋๊น์ง ๋๊ฐ์ ๊ฐ๋ก์ง๋ฅด๊ธฐ๋ก ์ด๋ํ๋ค.
๋น์ฉ = Math.min(2*S, W)
- (2) ๋ชฉ์ ์ง์ x์ถ ํน์ y์ถ์ด ์ผ์นํ ์ดํ์๋ ํ์นธ ์ด๋๊ณผ ๋๊ฐ์ ๊ฐ๋ก์ง๋ฅด๊ธฐ ์ค ์ต์ ๋น์ฉ์ ํํด์ ์ด๋ํ๋ค.
- a.
S > W
์ธ ๊ฒฝ์ฐ (๋ชฉ์ ์ง - ํ ์์น) == ์ง์์ผ ๊ฒฝ์ฐ W๋ก๋ง ์ด๋, ํ์ ์ผ ๊ฒฝ์ฐ, ๋ชฉ์ ์ง-1๊น์ง W๋ก ์ด๋ ํ ๋ง์ง๋ง ํ ๋ฒ์ S๋ก ์ด๋ - b.
S <= W
์ธ ๊ฒฝ์ฐ, S๋ก ์ญ ์ด๋
- a.
3. ์ฝ๋ ์๊ฐ ๐
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
/*
* b 1459 ๊ฑท๊ธฐ
* 1) ๋๊ฐ์ ์ด๋์ ๋ชฉ์ ์ง์ x์ถ์ด ์ผ์นํ ๋๊น์ง ๊ฐ๋ค. (์ด๋ ๋น์ฉ์ 2S์ W ์ค ํ๋ ์ ํ)
* 2) x์ถ๊ณผ ์ผ์นํ ํ์๋, ๋ค์ S์ W ํ์ธ ํ์ฌ ์ต์๊ฐ์ผ๋ก ์ด๋ํ๋ค.
* */
static long cost = 0;
static long startX = 0;
static long startY = 0;
static long X,Y,S,W;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st= new StringTokenizer(br.readLine());
X = Integer.parseInt(st.nextToken());
Y = Integer.parseInt(st.nextToken());
S = Integer.parseInt(st.nextToken());
W = Integer.parseInt(st.nextToken());
crossOver();
goFront();
System.out.println(cost);
}
public static void crossOver() {
long go = Math.min(X,Y);
startX = go; startY = go;
cost += go*Math.min(2*S, W);
}
public static void goFront() {
long cur;
long dest;
if(startX == X){
cur = startY;
dest = Y;
}else {
cur = startX;
dest = X;
}
if(S > W) {
if(Math.abs(cur-dest)%2 == 0){
cost += Math.abs(cur-dest)*W;
}
else{
cost += (Math.abs(cur-dest)-1)*W;
cost += S;
}
}else {
cost += Math.abs(cur-dest)*S;
}
}
}
4. ๋ฐฐ์ด ๊ฒ๋ค ๐ฏ
๋ฌด์์ ๋ฐ๋ณต๋ฌธ ์ฐ์ง๋ง๊ณ , ์ํ์ ๋จธ๋ฆฌ๋ฅผ ์ฐ์.
0