๊ธฐ๋ก๋ฐฉ

BOJ_1331 : ๋‚˜์ดํŠธ ํˆฌ์–ด ๋ณธ๋ฌธ

CodingTest/Java

BOJ_1331 : ๋‚˜์ดํŠธ ํˆฌ์–ด

Soom_1n 2022. 9. 19. 21:59

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

 

1331๋ฒˆ: ๋‚˜์ดํŠธ ํˆฌ์–ด

๋‚˜์ดํŠธ ํˆฌ์–ด๋Š” ์ฒด์ŠคํŒ์—์„œ ๋‚˜์ดํŠธ๊ฐ€ ๋ชจ๋“  ์นธ์„ ์ •ํ™•ํžˆ ํ•œ ๋ฒˆ์”ฉ ๋ฐฉ๋ฌธํ•˜๋ฉฐ, ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฐฉ๋ฌธํ•˜๋Š” ์นธ์—์„œ ์‹œ์ž‘์ ์œผ๋กœ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๋กœ์ด๋‹ค. ๋‹ค์Œ ๊ทธ๋ฆผ์€ ๋‚˜์ดํŠธ ํˆฌ์–ด์˜ ํ•œ ์˜ˆ์ด๋‹ค. ์˜์‹์ด๋Š” 6×

www.acmicpc.net



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

  • ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๋ฃจํŠธ๊ฐ€ ์ฒด์Šค์˜ ๋‚˜์ดํŠธ๊ฐ€ ์ค‘๋ณต์—†์ด ์›€์ง์ด๊ณ , ๋งˆ์ง€๋ง‰ ๊นŒ์ง€ ๋Œ์•„์˜ฌ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
    • ๋‚˜์ดํŠธ๋Š” 8๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๋‹ค. (๋ง ๋ชจ์–‘)
    • ์ค‘๋ณต๋œ ๊ณณ์„ ๋ฐŸ์œผ๋ฉด ์•ˆ๋œ๋‹ค.
    • ๋ฃจํŠธ์˜ ์ฒ˜์Œ๊ณผ ๋งˆ์ง€๋ง‰๋„ ๋‚˜์ดํŠธ๊ฐ€ ์˜ค๊ฐˆ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

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

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String input[] = new String[36];
        boolean arr[][] = new boolean[6][6];
        int night[][] = {{-1,-2},{-2,-1},{-2,1},{-1,2},{1,2},{2,1},{2,-1},{1,-2}};

        for (int i = 0; i < 36; i++)
            input[i] = sc.next();

        int x = 0, y = 0, new_x, new_y;

        new_x = 5 - (int)(input[0].charAt(1) - '1');
        new_y =  (int)(input[0].charAt(0) - 'A');
        x = new_x;
        y = new_y;
        arr[new_x][new_y] = true;

        for (int i = 1; i < 36; i++){
                new_x = 5 - (int)(input[i].charAt(1) - '1');
                new_y =  (int)(input[i].charAt(0) - 'A');

                int diff_x = new_x - x;
                int diff_y = new_y - y;

                boolean flag = false;
                for (int k = 0; k < 8; k++){
                    if (diff_x == night[k][0] && diff_y == night[k][1]){
                        if (!arr[new_x][new_y]){
                            arr[new_x][new_y] = true;
                            flag = true;
                            break;
                        }
                    }
                }

                if (!flag) {
                    System.out.println("Invalid");
                    System.exit(0);
                }

                x = new_x;
                y = new_y;
        }

        boolean flag = false;

        int diff_x = x - (5 - (int)(input[0].charAt(1) - '1'));
        int diff_y = y - (int)(input[0].charAt(0) - 'A');

        for (int k = 0; k < 8; k++){
            if (diff_x == night[k][0] && diff_y == night[k][1]){
                if (arr[new_x][new_y]){
                    arr[new_x][new_y] = true;
                    flag = true;
                    break;
                }
            }
        }

        if(flag)
            System.out.println("Valid");
        else
            System.out.println("Invalid");
    }
}

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

  • ์ฒ˜์Œ๊ณผ ๋งˆ์ง€๋ง‰์„ ๋”ฐ๋กœ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด์„œ 1์ฐจ์› ๋ฐฐ์—ด์— ์ž…๋ ฅ์„ ์ €์žฅํ–ˆ๋‹ค.
    • ์ฒซ ์œ„์น˜๋Š” ํ•ด๋‹น ์ขŒํ‘œ๋งŒ ๊ธฐ์–ตํ•œ๋‹ค.
  • for ๋ฌธ์„ ๋Œ๋ฉฐ ์ขŒํ‘œ ์ด๋™๋Œ€๋กœ ๊ฒ€์‚ฌํ•œ๋‹ค.
    • ์ค‘๋ณต๋œ ์ขŒํ‘œ์ธ์ง€, ๋‚˜์ดํŠธ๊ฐ€ ์›€์ง์ผ ์ˆ˜ ์žˆ๋Š” ์ขŒํ‘œ์ธ์ง€ ํ™•์ธํ•œ๋‹ค.
    • ๋งŒ์•ฝ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด Invalid๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ข…๋ฃŒํ•œ๋‹ค.
  • ์ฒ˜์Œ๊ณผ ๋ ์ขŒํ‘œ์˜ ์—ฐ๊ฒฐ์„ ํ™•์ธํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์ž ์„ ์•ˆ์ž๊ณ  ์ฝ”ํ…Œ๋ฌธ์ œ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ดํ’€์—ˆ๋Š”์ง€, ๊ทธ๋ ‡๊ฒŒ ์–ด๋ ค์šด ๋ฌธ์ œ๋Š” ์•„๋‹Œ ๊ฒƒ ๊ฐ™์€๋ฐ ์—„์ฒญ ์˜ค๋ž˜๊ฑธ๋ ธ๋‹ค.
  • ๋ฌธ์ œ๋„ ๊ฐ„๋‹จํ•œ ๊ทœ์น™ 3๊ฐ€์ง€์˜€๋Š”๋ฐ ํŒŒ์•…์„ ๋Šฆ๊ฒŒํ•ด์„œ ์ฝ”๋“œ๋ฅผ ๊ณ„์† ๊ณ ์ณ์•ผํ–ˆ๋‹ค.
  • ๋งˆ์ง€๋ง‰ ์ œ์ถœ๋„ ํ˜•์‹์„ ๋งž์ถ”์ง€ ์•Š๋Š” ๋“ฑ ์ง‘์ค‘๋ ฅ ํ•˜๋ฝ์ด ๋งŽ์ด ๋ณด์˜€๋‹ค. ์ฝ”ํ…Œ๋Š” ์ž ์„ ํ‘น ์ž์•ผํ•œ๋‹ค...

728x90

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

BOJ_1343 : ํด๋ฆฌ์˜ค๋ฏธ๋…ธ  (0) 2022.09.21
BOJ_1340 : ์—ฐ๋„ ์ง„ํ–‰๋ฐ”  (0) 2022.09.20
BOJ_1312 : ์†Œ์ˆ˜  (0) 2022.09.18
BOJ_1094 : ๋ง‰๋Œ€๊ธฐ  (0) 2022.09.18
BOJ_1251 : ๋‹จ์–ด ๋‚˜๋ˆ„๊ธฐ  (0) 2022.09.18