๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/-

[๋ฐฑ์ค€]1459๋ฒˆ: ๊ฑท๊ธฐ

by syLim___ 2023. 10. 23.
728x90

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

 

1459๋ฒˆ: ๊ฑท๊ธฐ

์„ธ์ค€์ด๋Š” ํ•™๊ต์—์„œ ์ง‘์œผ๋กœ ๊ฐ€๋ ค๊ณ  ํ•œ๋‹ค. ๋„์‹œ์˜ ํฌ๊ธฐ๋Š” ๋ฌดํ•œ๋Œ€์ด๊ณ , ๋„์‹œ์˜ ์„ธ๋กœ ๋„๋กœ๋Š” ๋ชจ๋“  ์ •์ˆ˜ x์ขŒํ‘œ๋งˆ๋‹ค ์žˆ๊ณ , ๊ฐ€๋กœ ๋„๋กœ๋Š” ๋ชจ๋“  ์ •์ˆ˜ y์ขŒํ‘œ๋งˆ๋‹ค ์žˆ๋‹ค. ์„ธ์ค€์ด๋Š” ํ˜„์žฌ (0, 0)์— ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  (

www.acmicpc.net


 

์ฒ˜์Œ์—๋Š” dp๋กœ ํ’€๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ, ์ฃผ์–ด์ง„ ์ •์ˆ˜ ๋ฒ”์œ„๊ฐ€ ๋„ˆ๋ฌด ์ปค์„œ ํž™ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์„œ ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์—†์—ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ์˜ค๋žซ๋™์•ˆ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๋‹ค๋ฅธ ๋ถ„ ํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ํ’€์—ˆ๋‹ค.

๊ฐ„๋‹จํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ๋˜๋Š” ๊ฑฐ์˜€๋Š”๋ฐ ๋– ์˜ค๋ฅด์ง€๊ฐ€ ์•Š์•„์„œ ์˜ค๋ž˜๊ฑธ๋ ธ๋”ฐ

 


 

๐Ÿฅ ์กฐ์‹ฌํ•  ์ 

 

 - x์™€ y๊ฐ€ ๋งค์šฐ ํฐ ์ˆ˜๋กœ ์ฃผ์–ด์ง€๋ฉด ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ€ Integer ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•˜๊ธฐ ๋•Œ๋ฌธ์—,

    ๋ณ€์ˆ˜ ์ž๋ฃŒํ˜•์„ ๋ชจ๋‘ longํƒ€์ž…์œผ๋กœ ์„ค์ •ํ•ด์ฃผ์—ˆ๋‹ค.

 

๐Ÿฅ ํ’€์ด

๋ชฉํ‘œ์ง€์ ๊นŒ์ง€ ์ด๋™ํ•˜๋Š” ์ตœ์†Œ ๊ฑฐ๋ฆฌ ํ›„๋ณด๋กœ๋Š” ๋‹ค์Œ 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

(๊ทธ๋ฆผ ๊ทธ๋ ค์„œ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ด๊ฐ€ ๊ฐˆ ๊ฒƒ์ด๋‹ค!!)

 

1๏ธโƒฃ ์ง์„ ์ด๋™๋งŒ ํ•˜๋Š” ๊ฒฝ์šฐ: (x+y) * w

 

2๏ธโƒฃ ๋Œ€๊ฐ์„  ์ด๋™๋งŒ ํ•˜๋Š” ๊ฒฝ์šฐ

 - ๋ชฉํ‘œ ์ขŒํ‘œ๊ฐ€ (ํ™€์ˆ˜, ํ™€์ˆ˜) ๋˜๋Š” (์ง์ˆ˜, ์ง์ˆ˜) ์กฐํ•ฉ์ธ ๊ฒฝ์šฐ: max(x,y) * s

 - ๋ชฉํ‘œ ์ขŒํ‘œ๊ฐ€ (ํ™€์ˆ˜, ์ง์ˆ˜) ๋˜๋Š” (์ง์ˆ˜, ํ™€์ˆ˜) ์กฐํ•ฉ์ธ ๊ฒฝ์šฐ: (max(x,y)-1) * s

 

3๏ธโƒฃ ์ง์„  + ๋Œ€๊ฐ์„  ์ด๋™ ์กฐํ•ฉ: min(x,y) * s + abs(x-y) * w

 

์ด ์ค‘์—์„œ ์ตœ์†Œ๊ฐ’์ด ์ •๋‹ต์ด๋‹ค.

 


โœ… ์ œ์ถœ ์ฝ”๋“œ

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        String[] input = reader.readLine().split(" ");
        long x = Integer.parseInt(input[0]);
        long y = Integer.parseInt(input[1]);
        long w = Integer.parseInt(input[2]);
        long s = Integer.parseInt(input[3]);

        long dist1 = (x+y) * w; // ์ง์„  ์ด๋™ ๊ฑฐ๋ฆฌ
        long dist2; // ๋Œ€๊ฐ์„  ์ด๋™ ๊ฑฐ๋ฆฌ
        if ( (x+y)%2 == 1){
            dist2 = (Math.max(x,y)-1) * s + w;
        }else {
            dist2 = Math.max(x,y) * s;
        }
        long dist3 = Math.min(x,y) * s + Math.abs(x-y) * w; // ์ง์„ , ๋Œ€๊ฐ์„  ์กฐํ•ฉ ์ด๋™ ๊ฑฐ๋ฆฌ

        System.out.println(Math.min(Math.min(dist1, dist2), dist3));
    }
}

 

โœ… Reference

 - https://jaewoo2233.tistory.com/36

728x90