1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [S1_9205] ๋งฅ์ฃผ ๋งˆ์‹œ๋ฉด์„œ ๊ฑธ์–ด๊ฐ€๊ธฐ

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

public class Main {

    static int N, sx, sy, dx, dy;

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        StringTokenizer st = null;

        // ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค
        int TC = Integer.parseInt(br.readLine());

        for (int tc = 0; tc < TC; tc++) {

            // ํŽธ์˜์  ๊ฐœ์ˆ˜
            N = Integer.parseInt(br.readLine());

            // ํŽธ์˜์ ๋งŒ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด
            List<int[]> list = new ArrayList<>();

            for (int i = 0; i < N + 2; i++) {
                st = new StringTokenizer(br.readLine(), " ");

                int x = Integer.parseInt(st.nextToken());
                int y = Integer.parseInt(st.nextToken());

                // ์ถœ๋ฐœ์ 
                if (i == 0) {
                    sx = x;
                    sy = y;
                }
                // ๋„์ฐฉ์ 
                else if (i == N + 1) {
                    dx = x;
                    dy = y;
                }
                // ํŽธ์˜์ 
                else {
                    list.add(new int[] {x,y});
                }
            }

            // bfs์˜ ๊ฒฐ๊ณผ๊ฐ’์— ๋”ฐ๋ผ ์ถœ๋ ฅ
            String str = "";
            if(bfs(list)){
                str = "happy";
            }
            else{
                str = "sad";
            }
            sb.append(str).append("\n");
        }
        System.out.print(sb);
    }

    // bfs
    static boolean bfs(List<int[]> list) {
        // ๋ฐฉ๋ฌธ์ฒดํฌ
        boolean[] v = new boolean[N];
        Queue<int[]> q = new LinkedList<>();
        q.add(new int[] {sx, sy});

        while (!q.isEmpty()) {
            int[] d = q.poll();
            // ํ˜„์žฌ ์ขŒํ‘œ ๊ฐ’
            int px = d[0];
            int py = d[1];

            // ๋งˆ์ง€๋ง‰
            // ๋งฅ์ฃผ๊ฐ€ ๋‚จ๋Š” ๊ฒฝ์šฐ
            if (Math.abs(px - dx) + Math.abs(py - dy) <= 1000) {
                return true;
            }

            // ํŽธ์˜์  ๋Œ๊ธฐ
            for (int i = 0; i < N; i++) {
                // ๋ฐฉ๋ฌธ ์•ˆํ•œ ๊ฒฝ์šฐ
                if (!v[i]) {
                    // list์—์„œ ๊ฐ’ ๊ฐ€์ ธ์˜จ๋‹ค
                    int nx = list.get(i)[0];
                    int ny = list.get(i)[1];

                    // ๊ฑฐ๋ฆฌ ์ฒดํฌ
                    // ๋งฅ์ฃผ๊ฐ€ ๋‚จ๋Š” ๊ฒฝ์šฐ
                    if (Math.abs(px - nx)  + Math.abs(py - ny) <= 1000) {
                        v[i] = true;
                        q.add(new int[] {nx, ny});
                    }
                }
            }
        }
        return false;
    }
}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ์ž˜๋ชป์ดํ•ดํ–ˆ๋‹ค..
๊ทธ๋ƒฅ ์ˆœ์„œ๊ฐ€ ์ •ํ•ด์ ธ์žˆ๋Š”์ค„ ์•Œ์•˜๋Š”๋ฐ ๊ทธ๊ฒŒ ์•„๋‹ˆ์˜€๋‹ค.. ใ…‹ใ…‹ใ…‹ ์ด๋ฏธ ๋ฌธ์ œ๋ฅผ ์ผ๋ฐ˜์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‹ค ํ’€๊ณ  ํ‹€๋ฆฌ๊ณ  ๋‚˜์„œ ๊นจ๋‹ฌ์€ ๊ฒƒ .. ใ…‹ใ…‹
๊ทธ๋ž˜์„œ ๋ณด๋‹ˆ ํŽธ์˜์  ๊ฐ€๋Š” ์ˆœ์„œ๊ฐ€ ์ƒ๊ด€ ์—†๋Š” ๊ฒƒ์„ ๋ณด๊ณ  bfs๋ฅผ ํ†ตํ•ด ๊ตฌํ˜„ํ–ˆ๋‹ค.
์ฃผ์˜ํ•  ์ ์€ x,y ๊ฐ’์„ ํ†ตํ•ด ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ•ด์„œ 20*50์€ 1000์ด๋ฏ€๋กœ 1000๋ณด๋‹ค ์ž‘์œผ๋ฉด ๋งฅ์ฃผ๋ฅผ ๋จน์„ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ true์ด๊ณ  1000์„ ๋„˜์œผ๋ฉด ๋งฅ์ฃผ๋ฅผ ๋ชป ๋จน์œผ๋ฏ€๋กœ false์ด๋‹ค.

ํƒœ๊ทธ: , , ,

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: