๊ธฐ๋ก๋ฐฉ

BOJ_1064 : ํ‰ํ–‰์‚ฌ๋ณ€ํ˜• ๋ณธ๋ฌธ

CodingTest/Java

BOJ_1064 : ํ‰ํ–‰์‚ฌ๋ณ€ํ˜•

Soom_1n 2022. 11. 1. 16:03

๐Ÿ‘‰ ๋ฌธ์ œ๋งํฌ

 

1064๋ฒˆ: ํ‰ํ–‰์‚ฌ๋ณ€ํ˜•

ํ‰ํ–‰์‚ฌ๋ณ€ํ˜•์€ ํ‰ํ–‰ํ•œ ๋‘ ๋ณ€์„ ๊ฐ€์ง„ ์‚ฌ๊ฐํ˜•์ด๋‹ค. ์„ธ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ์ ์ด ์ฃผ์–ด์ง„๋‹ค. A(xA,yA), B(xB,yB), C(xC,yC) ์ด๋•Œ, ์ ์ ˆํžˆ ์  D๋ฅผ ์ฐพ์•„์„œ ๋„ค ์ ์œผ๋กœ ํ‰ํ–‰์‚ฌ๋ณ€ํ˜•์„ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค. ์ด๋•Œ, D๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ๋‚˜

www.acmicpc.net



๐Ÿ”ธ ๋ฌธ์ œ ๋ถ„์„ ๐Ÿ”ธ

  • ์„ธ ์ ์˜ ์ขŒํ‘œ๊ฐ€ ์ฃผ์–ด์ง€๋ฉด, ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ‰ํ–‰์‚ฌ๋ณ€ํ˜• ์ค‘ ๊ฐ€์žฅ ํฐ ๋„ˆ๋น„์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๋„ˆ๋น„๋ฅผ ๋บ€ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

(0,0), (1,1), (2,0) ์ด ์ฃผ์–ด์กŒ์„๋•Œ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ํ‰ํ–‰ ์‚ฌ๋ณ€ํ˜•

  • ์„ธ ์ ์œผ๋กœ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ํ‰ํ–‰์‚ฌ๋ณ€ํ˜•์€ 3๊ฐ€์ง€๊ฐ€ ๋‚˜์˜ค๋Š”๋ฐ, ๊ทธ ์ค‘ 2๊ฐ€์ง€๋Š” ๊ฐ™์„ ์ˆ˜ ์žˆ๋‹ค.
  • ํ‰ํ–‰์‚ฌ๋ณ€ํ˜•์„ ๋งŒ๋“ค ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๋Š” ์„ธ ์ ์ด ํ•œ ์ง์„ ์œ„์— ์กด์žฌํ•  ๋•Œ์ด๋‹ค.
    • ๋‘ ์ ์˜ ๊ธฐ์šธ๊ธฐ (x์ฆ๊ฐ€๋Ÿ‰/y์ฆ๊ฐ€๋Ÿ‰)์„ ํ™•์ธํ•ด์„œ, ๊ธฐ์šธ๊ธฐ๊ฐ€ ๊ฐ™์œผ๋ฉด(ํ•œ ์„ ๋ถ„ ์œ„์— ์กด์žฌํ•˜๋ฉด) -1.0 ์„ ์ถœ๋ ฅํ•œ๋‹ค.
  • ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ํ‰ํ–‰์‚ฌ๋ณ€ํ˜•์˜ ๋‘˜๋ ˆ๋Š” ์„ธ ์ ์œผ๋กœ ๋‚˜์˜ค๋Š” ์„ ๋ถ„์„ ๋‘ ๋ณ€์œผ๋กœ ํ•œ๋‹ค.
    • ์„ธ ์ ์œผ๋กœ ๋‚˜์˜ค๋Š” ์„ธ ์„ ๋ถ„์„ 2๊ฐœ ๋ฝ‘์•„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์กฐํ•ฉ์„ ๋น„๊ตํ•œ๋‹ค.
    • ์กฐํ•ฉ์˜ ์ตœ๋Œ€๊ฐ’์„ max, ์ตœ์†Œ๊ฐ’์„ min์œผ๋กœ ์ €์žฅํ•œ๋‹ค.
    • max*2 ๋Š” ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ‰ํ–‰์‚ฌ๋ณ€ํ˜•์˜ ์ตœ๋Œ€ ๋‘˜๋ ˆ์ด๊ณ , min*2 ๋Š” ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ํ‰ํ–‰์‚ฌ๋ณ€ํ˜•์˜ ์ตœ์†Œ ๋‘˜๋ ˆ์ด๋‹ค.

๐Ÿ”ธ ์ฝ”๋“œ ๐Ÿ”ธ

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

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());
        int arr[] = new int[6];
        for (int i = 0; i < 6; i++)
            arr[i] = Integer.parseInt(st.nextToken());

        double abx = arr[0]-arr[2];
        double aby = arr[1]-arr[3];
        double acx = arr[0]-arr[4];
        double acy = arr[1]-arr[5];
        double bcx = arr[2]-arr[4];
        double bcy = arr[3]-arr[5];

        // ๊ธฐ์šธ๊ธฐ๊ฐ€ ๊ฐ™์œผ๋ฉด ๊ฐ™์€ ์ง์„ ์— ์กด์žฌํ•˜๋Š” ์ 
        // ๊ธฐ์šธ๊ธฐ : x์ฆ๊ฐ€๋Ÿ‰/y์ฆ๊ฐ€๋Ÿ‰
        // abx / aby == acx / acy (0์„ ๋‚˜๋ˆ„๋ฉด ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ๋ฏ€๋กœ ์น˜ํ™˜)
        // abx * acy == acx * aby
        if(abx*acy == aby*acx){
            System.out.println(-1.0);
            System.exit(0);
        }

        double ab_length = Math.sqrt(Math.pow(abx,2)+Math.pow(aby,2));
        double ac_length = Math.sqrt(Math.pow(acx,2)+Math.pow(acy,2));
        double bc_length = Math.sqrt(Math.pow(bcx,2)+Math.pow(bcy,2));

        double max = ab_length + ac_length;
        double min = ab_length + ac_length;

        if (ac_length + bc_length > max) max = ac_length + bc_length;
        if (bc_length + ab_length > max) max = bc_length + ab_length;
        if (ac_length + bc_length < min) min = ac_length + bc_length;
        if (bc_length + ab_length < min) min = bc_length + ab_length;

        System.out.println((max-min)*2);
    }
}

๐Ÿ”ธ ์ฝ”๋“œ ํ•ด์„ ๐Ÿ”ธ

  • ์„ธ ์ ์˜ ์ขŒํ‘œ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ณ , ๋ฐฐ์—ด arr์— ์ €์žฅํ•œ๋‹ค.
  • ๊ฐ ์  ๋ผ๋ฆฌ์˜ x์ขŒํ‘œ ์ฐจ์ด์™€ y์ขŒํ‘œ ์ฐจ์ด๋ฅผ ๊ณ„์‚ฐํ•ด์„œ ์ €์žฅํ•œ๋‹ค. ๋นผ๊ธฐ์˜ ์ˆœ์„œ๋Š” ์ƒ๊ด€ ์—†๋‹ค.
  • ์„ธ ์  ์‚ฌ์ด์˜ ๋‘ ์ง์„ ์˜ ๊ธฐ์šธ๊ธฐ๋ฅผ ๋น„๊ตํ•ด ๊ฐ™๋‹ค๋ฉด ํ•œ ์ง์„ ์œ„์— ์žˆ๋Š” ์„ธ ์ ์ด ๋˜๋ฏ€๋กœ -1.0์„ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒํ•œ๋‹ค.
    • ๊ธฐ์šธ๊ธฐ๋Š” x์ฆ๊ฐ€๋Ÿ‰/y์ฆ๊ฐ€๋Ÿ‰์ธ๋ฐ ์ฝ”๋“œ์—์„œ 0์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๋ฏ€๋กœ, ๊ณฑํ•˜๊ธฐ ๊ณต์‹์œผ๋กœ ์น˜ํ™˜ํ•œ๋‹ค.
  • ์„ธ ์ง์„ ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•ด์„œ max์™€ min์„ ์ฐพ๋Š”๋‹ค.
  • max-min์— 2๋ฅผ ๊ณฑํ•ด ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ํ‰ํ–‰์‚ฌ๋ณ€ํ˜•์„ ๊ทธ๋ฆฌ๋Š” ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์ดํ•ด๊ฐ€ ์•ˆ๋˜์„œ ๊ทธ๋ฆผ์œผ๋กœ ๊ทธ๋ ค๋ณธ ๋ฌธ์ œ์ด๋‹ค. ๊ทธ๋ ค๋ณด๋‹ˆ ํ™•์‹คํžˆ ๋ฐ”๋กœ ์ดํ•ด๊ฐ€ ๋˜์—ˆ๋‹ค.
  • ์ฒ˜์Œ์—” ์ ‘๊ทผ์ด ์–ด๋ ค์›Œ์„œ ์ˆ˜ํ•™์  ์›๋ฆฌ๊ฐ€ ๋งŽ์ด ๋“ค์–ด๊ฐ„ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ํ’€์ด ํฌ์ŠคํŒ…๋„ ์ฐธ๊ณ ํ–ˆ๋‹ค.

728x90

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

BOJ_12891 : DNA ๋น„๋ฐ€๋ฒˆํ˜ธ  (0) 2022.11.03
BOJ_1120 : ๋ฌธ์ž์—ด  (0) 2022.11.02
BOJ_1059 : ์ข‹์€ ๊ตฌ๊ฐ„  (0) 2022.10.30
BOJ_1051 : ์ˆซ์ž ์ •์‚ฌ๊ฐํ˜•  (0) 2022.10.27
BOJ_2003 : ์ˆ˜๋“ค์˜ ํ•ฉ 2  (0) 2022.10.26