๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ProgramSolve/Baekjoon

[BOJ] 2477๋ฒˆ - ์ฐธ์™ธ๋ฐญ (Java)

by SooooooooS 2024. 2. 19.
728x90

๐Ÿ› ๏ธ ๋ฌธ์ œ ๐Ÿ› ๏ธ


๐Ÿ—’๏ธ ์„ค๋ช… ๐Ÿ—’๏ธ

์ฐธ์™ธ๋ฐญ์€ ใ„ฑ์ž ๋ชจ์–‘์ด๊ฑฐ๋‚˜ ใ„ฑ์ž๋ฅผ 90๋„, 180๋„, 270๋„ ํšŒ์ „ํ•œ ๋ชจ์–‘(โ”, โ”—, โ”› ๋ชจ์–‘)์˜ ์œก๊ฐํ˜•

๋ฐญ์˜ ๊ฒฝ๊ณ„(์œก๊ฐํ˜•์˜ ๋ณ€)๋Š” ๋ชจ๋‘ ๋™์„œ ๋ฐฉํ–ฅ์ด๊ฑฐ๋‚˜ ๋‚จ๋ถ ๋ฐฉํ–ฅ

๋ฐญ์˜ ๋ชจ์–‘์€ ํ•ญ์ƒ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ์œก๊ฐํ˜•์ด๋‹ค.(ํšŒ์ „ํ•  ์ˆ˜ ์žˆ๋‹ค.)

 

๊ทธ๋Ÿฌ๋ฏ€๋กœ ๋ฐญ์˜ ๋„“์ด๋Š” [์ „์ฒด์ ์ธ ์‚ฌ๊ฐํ˜•์˜ ๋„“์ด - ๋น ์ ธ์•ผํ•  ์ž‘์€ ์‚ฌ๊ฐํ˜•์˜ ๋„“์ด] ์ด๋‹ค.

๋ฐญ์˜ ๋„“์ด

์šฐ๋ฆฌ๋Š” ๊ฐ€์žฅ ๊ธด ๊ฐ€๋กœ์˜ ๊ธธ์ด์™€ ์„ธ๋กœ์˜ ๊ธธ์ด, ๋นผ์•ผํ•  ๊ฐ€๋กœ์˜ ๊ธธ์ด์™€ ์„ธ๋กœ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•ด์•ผํ•œ๋‹ค.

1. ๊ฐ€์žฅ ๊ธด ๊ฐ€๋กœ์™€ ์„ธ๋กœ ๊ตฌํ•˜๊ธฐ

์ž…๋ ฅ๋ฐ›์„ ๋•Œ ๋™์ชฝ์€ 1, ์„œ์ชฝ์€ 2, ๋‚จ์ชฝ์€ 3, ๋ถ์ชฝ์€ 4 ์ด๋ฏ€๋กœ 1, 2์ผ ๊ฒฝ์šฐ ๊ฐ€๋กœ ํ™•์ธ, 3,4์ผ ๊ฒฝ์šฐ ์„ธ๋กœ ํ™•์ธ

2. ๋นผ์•ผํ•  ๊ฐ€๋กœ์™€ ์„ธ๋กœ ๊ตฌํ•˜๊ธฐ

์œก๊ฐํ˜•์˜ ์ž„์˜์˜ ํ•œ ๊ผญ์ง“์ ์—์„œ ์ถœ๋ฐœํ•˜์—ฌ ๋ฐ˜์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ๋‘˜๋ ˆ๋ฅผ ๋Œ๋ฉด์„œ ์ž…๋ ฅ์„ ๋ฐ›๋Š”๋‹ค.

์ž„์˜์˜ ํ•œ ๋ณ€์˜ ์˜† ๋ณ€์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ฐ€๋กœ(์™ผ) ์„ธ๋กœ(์˜ค)

์œ„์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด ๊ฐ€์žฅ ๊ธด ๊ฐ€๋กœ์™€ ์„ธ๋กœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•„์š”ํ•œ ๊ฐ’์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ๊ฐ€์žฅ ๊ธด ์„ธ๋กœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๋‘ ๋ณ€์€ ๋ฐญ์— ํฌํ•จ๋œ ๊ฐ€๋กœ์˜ ๊ธธ์ด์ด๋‹ค.
    • ํ•„์š”ํ•œ ๋นผ์•ผํ•˜๋Š” ๊ฐ€๋กœ์˜ ๊ธธ์ด๋Š” ๋‘ ๋ณ€์„ ๋นผ๋ฉด ๋œ๋‹ค.
  • ๊ฐ€์žฅ ๊ธด ๊ฐ€๋กœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์—ฐ๊ฒฐ๋œ ๋‘ ๋ณ€์€ ๋ฐญ์— ํฌํ•จ๋œ ์„ธ๋กœ์˜ ๊ธธ์ด์ด๋‹ค.
    • ํ•„์š”ํ•œ ๋นผ์•ผํ•˜๋Š” ์„ธ๋กœ์˜ ๊ธธ์ด๋Š” ๋‘ ๋ณ€์„ ๋นผ๋ฉด ๋œ๋‹ค.

์ด๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

int h = Math.abs(sides[(width+1) % 6] - sides[(6+(width-1)) % 6]); //์„ธ๋กœ
int w = Math.abs(sides[(height+1) % 6] - sides[(6+(height-1)) % 6]); //๊ฐ€๋กœ

์–‘ ์˜†์˜ ๋ณ€์€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ์กด์žฌํ•œ๋‹ค.

์–‘ ์˜†์˜ ๋ณ€ ๊ตฌํ•˜๊ธฐ

์ฆ‰, ๋ฌด์กฐ๊ฑด ์–‘ ์˜†์˜ ๋ณ€์€ ์กด์žฌํ•˜๋ฏ€๋กœ ๊ฐ€์žฅ ๋์˜ ์ธ๋ฑ์Šค์ผ ๊ฒฝ์šฐ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

๋‚˜๋Š” ์ด๋ฅผ ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌํ˜„ํ–ˆ๋‹ค.


๐Ÿ€ ํ’€์ด ๐Ÿ€

package Baekjoon;

import java.io.*;
import java.util.StringTokenizer;

public class Math2477 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;

        int k = Integer.parseInt(br.readLine());
        int[] sides = new int[6];
        int width = -1; //๊ฐ€์žฅ ๊ธด ๊ฐ€๋กœ์˜ ๊ธธ์ด ์ธ๋ฑ์Šค
        int height = -1; //๊ฐ€์žฅ ๊ธด ์„ธ๋กœ์˜ ๊ธธ์ด ์ธ๋ฑ์Šค
        for(int i = 0; i < 6; i++) {
            st = new StringTokenizer(br.readLine());
            int n = Integer.parseInt(st.nextToken());
            sides[i] = Integer.parseInt(st.nextToken());
            if(n < 3) {
                if(width == -1) {
                    width = i;
                }
                else if(sides[width] < sides[i]) {
                    width = i;
                }
            }
            else {
                if(height == -1) {
                    height = i;
                }
                else if(sides[height] < sides[i]) {
                    height = i;
                }
            }
        }

        int result = sides[width] * sides[height]; //์ „์ฒด์ ์ธ ์‚ฌ๊ฐํ˜• ๋„“์ด
        int h = Math.abs(sides[(width+1) % 6] - sides[(6+(width-1)) % 6]);
        int w = Math.abs(sides[(height+1) % 6] - sides[(6+(height-1)) % 6]);
        result -= w * h; //๋นผ์•ผํ•  ์‚ฌ๊ฐํ˜• ๋„“์ด ๋นผ๊ธฐ

        bw.write(result * k + "");
        bw.flush();
        bw.close();
    }
}
728x90

'ProgramSolve > Baekjoon' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[BOJ] 2529๋ฒˆ - ๋ถ€๋“ฑํ˜ธ (Java)  (0) 2024.03.11
[BOJ] 13023๋ฒˆ - ABCDE (Java)  (0) 2024.03.01
[BOJ] 1068๋ฒˆ - ํŠธ๋ฆฌ (Java)  (0) 2024.02.01
[BOJ] 5397๋ฒˆ - ํ‚ค๋กœ๊ฑฐ (Java)  (2) 2024.01.28
[BOJ] 2512๋ฒˆ - ์˜ˆ์‚ฐ (Java)  (0) 2024.01.15