๊ธฐ๋ก๋ฐฉ

BOJ_1063 : ํ‚น ๋ณธ๋ฌธ

CodingTest/Java

BOJ_1063 : ํ‚น

Soom_1n 2023. 1. 4. 00:40

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

 

1063๋ฒˆ: ํ‚น

8*8ํฌ๊ธฐ์˜ ์ฒด์ŠคํŒ์— ์™•์ด ํ•˜๋‚˜ ์žˆ๋‹ค. ํ‚น์˜ ํ˜„์žฌ ์œ„์น˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ฒด์ŠคํŒ์—์„œ ๋ง์˜ ์œ„์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฃผ์–ด์ง„๋‹ค. ์•ŒํŒŒ๋ฒณ ํ•˜๋‚˜์™€ ์ˆซ์ž ํ•˜๋‚˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”๋ฐ, ์•ŒํŒŒ๋ฒณ์€ ์—ด์„ ์ƒ์ง•ํ•˜๊ณ , ์ˆซ์ž๋Š”

www.acmicpc.net



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

  • 8 x 8 ์ฒด์ŠคํŒ์— ํ‚น๊ณผ ๋Œ์ด ๋†“์—ฌ์žˆ๋‹ค.
    • ํ‚น์„ 8๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋Œ์ด ์žˆ๋Š” ์ž๋ฆฌ๋ฉด ๋Œ์„ ํ‚น์˜ ์›€์ง์ž„๊ณผ ๊ฐ™์€ ๋ฐฉํ–ฅ์œผ๋กœ ๋ฏผ๋‹ค.
    • ํ‚น ํ˜น์€ ๋Œ์ด ์ฒด์ŠคํŒ์„ ๋ฒ—์–ด๋‚˜๋Š” ์›€์ง์ž„์ด๋ผ๋ฉด ๋„˜์–ด๊ฐ€๊ณ  ๋‹ค์Œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

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

import java.util.Scanner;

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

        int[] dx = {0, 0, 1, -1, -1, -1, 1, 1};
        int[] dy = {1, -1, 0, 0, 1, -1, 1, -1};
        String[] orders = {"R", "L", "B", "T", "RT", "LT", "RB", "LB"};

        String kingStart = sc.next();
        String stoneStart = sc.next();
        int n = sc.nextInt();

        int kx = 8 - (kingStart.charAt(1) - '0');
        int ky = kingStart.charAt(0) - 'A';
        int sx = 8 - (stoneStart.charAt(1) - '0');
        int sy = stoneStart.charAt(0) - 'A';

        for (int i = 0; i < n; i++) {
            String order = sc.next();
            int onum = -1;
            for (int j = 0; j < 8; j++) {
                if (order.equals(orders[j])) {
                    onum = j;
                    break;
                }
            }
            if (kx + dx[onum] >= 0 && kx + dx[onum] <= 7 && ky + dy[onum] >= 0 && ky + dy[onum] <= 7) {
                if (kx + dx[onum] == sx && ky + dy[onum] == sy) {
                    if (sx + dx[onum] >= 0 && sx + dx[onum] <= 7 && sy + dy[onum] >= 0 && sy + dy[onum] <= 7) {
                        kx += dx[onum];
                        ky += dy[onum];
                        sx += dx[onum];
                        sy += dy[onum];
                    }
                }
                else {
                    kx += dx[onum];
                    ky += dy[onum];
                }
            }
        }

        System.out.println(String.format("%c%d\n%c%d", (char) (ky + 'A'), 8 - kx, (char) (sy + 'A'), 8 - sx));
    }
}

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

  • 8๋ฐฉํ–ฅ ์›€์ง์ž„์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด orders, dx, dy ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ–ˆ๋‹ค.
    • orders๋กœ ์›€์ง์ž„ ๋ช…๋ น์˜ ๋ฒˆํ˜ธ๋ฅผ dx, dy ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค(onum)๋กœ ๋ณ€ํ™˜ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
  • ํ‚น๊ณผ ๋Œ์˜ ์ขŒํ‘œ๋„ ๋ฐฐ์—ด ์ธ๋ฑ์Šค์— ๋งž๊ฒŒ ๋ณ€ํ™˜ํ•œ๋‹ค.
  • n๊ฐœ์˜ ๋ช…๋ น์„ ๊ทœ์น™์— ๋งž๊ฒŒ ์ˆ˜ํ–‰ํ•œ๋‹ค.
    • ๋ช…๋ น์„ ๋”ฐ๋ž์„๋•Œ ํ‚น์ด ์ฒด์ŠคํŒ์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
      • ํ‚น์ด ์›€์ง์ด๋Š” ์ž๋ฆฌ์— ๋Œ์ด ์—†๋‹ค๋ฉด, ํ‚น์ด ๊ทธ ์ž๋ฆฌ๋กœ ์›€์ง์ธ๋‹ค.
      • ํ‚น์ด ์›€์ง์ด๋Š” ์ž๋ฆฌ์— ๋Œ์ด ์žˆ๋‹ค๋ฉด, ๋‹ค์‹œ ๋Œ์„ ์›€์ง์˜€์„๋•Œ ์ฒด์ŠคํŒ์„ ๋ฒ—์–ด๋‚˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
        • ์ฒด์ŠคํŒ์„ ๋ฒ—์–ด๋‚œ๋‹ค๋ฉด ์›€์ง์ž„์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.
        • ์ฒด์ŠคํŒ์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ๋Œ๊ณผ ํ‚น ๋ชจ๋‘ ์›€์ง์ธ๋‹ค.
  • ํ‚น๊ณผ ๋Œ์˜ ์ขŒํ‘œ๋ฅผ ๋ณ€ํ™˜ํ•ด ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿ”ธ end ๐Ÿ”ธ

  • ์–ด๋Š ์œ„์น˜์— ์žˆ๋“  ํ‚น๊ณผ ๋Œ์ด ํ•จ๊ป˜ ์›€์ง์ด๋Š”๊ฑด ์ค„ ์•Œ์•˜๋Š”๋ฐ, ๊ฒน์น ๋•Œ๋งŒ ๋Œ์„ ๋ฏธ๋Š” ๊ฒƒ์ด์–ด์„œ ์ข€ ํ—ค๋งธ๋‹ค.
  • ๋‹ค์‹œ๋ณด๋‹ˆ ํ‚น๊ณผ ๋Œ์˜ ์ขŒํ‘œ๋ฅผ ๊ผญ ๋ฐฐ์—ด ์ธ๋ฑ์Šค์ฒ˜๋Ÿผ ์™ผ์ชฝ์œ„๊ฐ€ 0,0์ด ๋˜๋„๋ก ๋ณ€ํ™˜ํ•  ํ•„์š”๋Š” ์—†๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

728x90

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

BOJ_1166 : ์„ ๋ฌผ  (0) 2023.01.06
BOJ_1072 : ๊ฒŒ์ž„  (0) 2023.01.04
BOJ_1057 : ํ† ๋„ˆ๋จผํŠธ  (0) 2023.01.01
BOJ_1004 : ์–ด๋ฆฐ ์™•์ž  (0) 2022.12.31
BOJ_1205 : ๋“ฑ์ˆ˜ ๊ตฌํ•˜๊ธฐ  (0) 2022.12.30