๐Ÿ’ป

[๋ฐฑ์ค€][์‚ผ์„ฑ SW์—ญ๋Ÿ‰ํ…Œ์ŠคํŠธ] 15685. ๋“œ๋ž˜๊ณค ์ปค๋ธŒ ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฌธ์ œํ’€์ด Baekjoon

[๋ฐฑ์ค€][์‚ผ์„ฑ SW์—ญ๋Ÿ‰ํ…Œ์ŠคํŠธ] 15685. ๋“œ๋ž˜๊ณค ์ปค๋ธŒ

๋˜ํšจ๋‹ˆ 2020. 4. 21. 21:45

https://www.acmicpc.net/problem/15685

 

15685๋ฒˆ: ๋“œ๋ž˜๊ณค ์ปค๋ธŒ

์ฒซ์งธ ์ค„์— ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 20)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ •๋ณด๋Š” ๋„ค ์ •์ˆ˜ x, y, d, g๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. x์™€ y๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์‹œ์ž‘ ์ , d๋Š” ์‹œ์ž‘ ๋ฐฉํ–ฅ, g๋Š” ์„ธ๋Œ€์ด๋‹ค. (0 ≤ x, y ≤ 100, 0 ≤ d ≤ 3, 0 ≤ g ≤ 10) ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ๊ฒฉ์ž ๋ฐ–์œผ๋กœ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ์„œ๋กœ ๊ฒน์น  ์ˆ˜ ์žˆ๋‹ค. ๋ฐฉํ–ฅ์€ 0, 1, 2,

www.acmicpc.net

๋ฌธ์ œ

๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์„ธ ๊ฐ€์ง€ ์†์„ฑ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ์ด์ฐจ์› ์ขŒํ‘œ ํ‰๋ฉด ์œ„์—์„œ ์ •์˜๋œ๋‹ค. ์ขŒํ‘œ ํ‰๋ฉด์˜ x์ถ•์€ → ๋ฐฉํ–ฅ, y์ถ•์€ ↓ ๋ฐฉํ–ฅ์ด๋‹ค.

  1. ์‹œ์ž‘ ์ 
  2. ์‹œ์ž‘ ๋ฐฉํ–ฅ
  3. ์„ธ๋Œ€

0์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๊ธธ์ด๊ฐ€ 1์ธ ์„ ๋ถ„์ด๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ (0, 0)์—์„œ ์‹œ์ž‘ํ•˜๊ณ , ์‹œ์ž‘ ๋ฐฉํ–ฅ์€ ์˜ค๋ฅธ์ชฝ์ธ 0์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์ด๋‹ค.

1์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” 0์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋ฅผ ๋ ์ ์„ ๊ธฐ์ค€์œผ๋กœ ์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ 90๋„ ํšŒ์ „์‹œํ‚จ ๋‹ค์Œ 0์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ๋ ์ ์— ๋ถ™์ธ ๊ฒƒ์ด๋‹ค. ๋ ์ ์ด๋ž€ ์‹œ์ž‘ ์ ์—์„œ ์„ ๋ถ„์„ ํƒ€๊ณ  ์ด๋™ํ–ˆ์„ ๋•Œ, ๊ฐ€์žฅ ๋จผ ๊ฑฐ๋ฆฌ์— ์žˆ๋Š” ์ ์„ ์˜๋ฏธํ•œ๋‹ค.

2์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋„ 1์„ธ๋Œ€๋ฅผ ๋งŒ๋“  ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. (ํŒŒ๋ž€์ƒ‰ ์„ ๋ถ„์€ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ์„ ๋ถ„์„ ๋‚˜ํƒ€๋‚ธ๋‹ค)

3์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋„ 2์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋ฅผ ์ด์šฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜ ๊ทธ๋ฆผ์€ 3์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์ด๋‹ค.

์ฆ‰, K(K > 1)์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” K-1์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋ฅผ ๋ ์ ์„ ๊ธฐ์ค€์œผ๋กœ 90๋„ ์‹œ๊ณ„ ๋ฐฉํ–ฅ ํšŒ์ „ ์‹œํ‚จ ๋‹ค์Œ, ๊ทธ๊ฒƒ์„ ๋ ์ ์— ๋ถ™์ธ ๊ฒƒ์ด๋‹ค.

ํฌ๊ธฐ๊ฐ€ 100×100์ธ ๊ฒฉ์ž ์œ„์— ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๊ฐ€ N๊ฐœ ์žˆ๋‹ค. ์ด๋•Œ, ํฌ๊ธฐ๊ฐ€ 1×1์ธ ์ •์‚ฌ๊ฐํ˜•์˜ ๋„ค ๊ผญ์ง“์ ์ด ๋ชจ๋‘ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ผ๋ถ€์ธ ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๊ฒฉ์ž์˜ ์ขŒํ‘œ๋Š” (x, y)๋กœ ๋‚˜ํƒ€๋‚ด๋ฉฐ, 0 ≤ x ≤ 100, 0 ≤ y ≤ 100๋งŒ ์œ ํšจํ•œ ์ขŒํ‘œ์ด๋‹ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ๊ฐœ์ˆ˜ N(1 ≤ N ≤ 20)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ •๋ณด๋Š” ๋„ค ์ •์ˆ˜ x, y, d, g๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. x์™€ y๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์‹œ์ž‘ ์ , d๋Š” ์‹œ์ž‘ ๋ฐฉํ–ฅ, g๋Š” ์„ธ๋Œ€์ด๋‹ค. (0 ≤ x, y ≤ 100, 0 ≤ d ≤ 3, 0 ≤ g ≤ 10)

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ๊ฒฉ์ž ๋ฐ–์œผ๋กœ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๋Š”๋‹ค. ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ์„œ๋กœ ๊ฒน์น  ์ˆ˜ ์žˆ๋‹ค.

๋ฐฉํ–ฅ์€ 0, 1, 2, 3 ์ค‘ ํ•˜๋‚˜์ด๊ณ , ๋‹ค์Œ์„ ์˜๋ฏธํ•œ๋‹ค.

  • 0: x์ขŒํ‘œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฉํ–ฅ (→)
  • 1: y์ขŒํ‘œ๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ๋ฐฉํ–ฅ (↑)
  • 2: x์ขŒํ‘œ๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ๋ฐฉํ–ฅ (←)
  • 3: y์ขŒํ‘œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฉํ–ฅ (↓)

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ํฌ๊ธฐ๊ฐ€ 1×1์ธ ์ •์‚ฌ๊ฐํ˜•์˜ ๋„ค ๊ผญ์ง“์ ์ด ๋ชจ๋‘ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์ผ๋ถ€์ธ ๊ฒƒ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

ํžŒํŠธ

์˜ˆ์ œ ์ž…๋ ฅ1

3
3 3 0 1
4 2 1 3
4 2 2 1

 

์˜ˆ์ œ ์ถœ๋ ฅ1

4

 

์˜ˆ์ œ ์ž…๋ ฅ2

4
3 3 0 1
4 2 1 3
4 2 2 1
2 7 3 4

 

์˜ˆ์ œ ์ถœ๋ ฅ2

8

 

์ƒ๊ฐ

๋ฌธ์ œ๊ฐ€ ๊ธธ๊ณ  ์ดํ•ดํ•˜๋Š” ๊ฒŒ ์–ด๋ ค์› ๋‹ค. ์ด๋ฆฌ์ €๋ฆฌ ์• ์“ฐ๋‹ค๊ฐ€ ์•ˆํ’€๋ ค์„œ ๊ฒฐ๊ตญ ๋‹ค๋ฅธ ๋ถ„์˜ ๋ธ”๋กœ๊ทธํ’€์ด๋ฅผ ๋ณด๊ณ  ๋˜‘๊ฐ™์ด ์ž‘์„ฑํ–ˆ๋‹ค. ์žŠ์–ด๋ฒ„๋ฆด๋•Œ์ฏค ๊ผญ ๋‹ค์‹œ ํ’€๊ฒƒ!

 

0: x์ขŒํ‘œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฉํ–ฅ (→)   ใ…ก => ใ…ฃ   ใ„ด์˜ ์ขŒ์šฐ๋ฐ˜์ „

1: y์ขŒํ‘œ๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ๋ฐฉํ–ฅ (↑)    ใ…ฃ => ใ…ก     ใ„ฑ

2: x์ขŒํ‘œ๊ฐ€ ๊ฐ์†Œํ•˜๋Š” ๋ฐฉํ–ฅ (←)   ใ…ก => ใ…ฃ    ใ„ฑ์˜ ์ขŒ์šฐ๋ฐ˜์ „

3: y์ขŒํ‘œ๊ฐ€ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฐฉํ–ฅ (↓)   ใ…ฃ => ใ…ก      ใ„ด

 

๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ์œ„ํ•ด ํฌ๊ฒŒ 2๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. 

1. ๋“œ๋ž˜๊ณค ์ปค๋ธŒ ๋งŒ๋“ค๊ธฐ

2. ์ •์‚ฌ๊ฐํ˜• ๊ฐœ์ˆ˜ ์„ธ๊ธฐ

 

 

์ž‘์„ฑํ•œ ์ฝ”๋“œ

 

https://velog.io/@skyepodium/%EB%B0%B1%EC%A4%80-15685-%EB%93%9C%EB%9E%98%EA%B3%A4-%EC%BB%A4%EB%B8%8C

 

๋ฐฑ์ค€ 15685 ๋“œ๋ž˜๊ณค ์ปค๋ธŒ

๊ทœ์น™์„ ์ฐพ๋Š” ๋ฌธ์ œ ์ €๋Š” ์Šคํƒ์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. 1. ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” ์„ธ๊ฐ€์ง€ ์†์„ฑ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. 1) ์‹œ์ž‘ ์  2) ์‹œ์ž‘ ๋ฐฉํ–ฅ 3) ์„ธ๋Œ€ ์ฆ‰, K(K > 1)์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ๋Š” `K-1์„ธ๋Œ€ ๋“œ๋ž˜๊ณค ์ปค๋ธŒ`๋ฅผ `๋ ์ ์„ ๊ธฐ์ค€์œผ๋กœ 90๋„ ์‹œ๊ณ„ ๋ฐฉํ–ฅ ํšŒ์ „` ์‹œํ‚จ ๋‹ค์Œ, ๊ทธ๊ฒƒ์„

velog.io

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <iostream>
#include <algorithm>
#include <vector>
 
using namespace std;
 
int n, x, y, d, g, result;
int ex, ey; //๋์ ์˜ ์ขŒํ‘œ
bool map[101][101];
 
//์˜ค, ์œ„, ์™ผ, ์•„
int dx[] = {10-10};
int dy[] = {0-101};
 
vector<int> dragon; //์ด์ „ ์„ธ๋Œ€์˜ ๋ฐฉํ–ฅ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด
 
//1.
void curve(vector<int> &dragon)
{
    int size = (int)dragon.size();
 
    for (int i = size - 1; i >= 0; i--)
    {
        int dir = (dragon[i] + 1) % 4;
 
        ex = ex + dx[dir];
        ey = ey + dy[dir];
 
        map[ex][ey] = true;
 
        dragon.push_back(dir);
    }
}
int main(int argc, const char *argv[])
{
    // insert code here...
    ios_base::sync_with_stdio(false);
    cin.tie(0);
 
    cin >> n;
 
    for (int i = 0; i < n; i++)
    {
        int x, y, d, g;
        cin >> x >> y >> d >> g;
 
        dragon.clear(); //๊ธฐ์กด ๋“œ๋ž˜๊ณค ์ปค๋ธŒ์˜ ์Šคํƒ์„ ๋น„์›Œ์ค€๋‹ค.
 
        map[x][y] = true;  //์‹œ์ž‘์  ํ‘œ์‹œ
 
        //0์„ธ๋Œ€ ์ขŒํ‘œ
        ex = x + dx[d];
        ey = y + dy[d];
 
        map[ex][ey] = true;
 
        dragon.push_back(d);
 
        for (int i = 0; i < g; i++)
        {
            curve(dragon);
        }
    }
 
    // 2.
    for (int i = 0; i <= 101 - 2; i++)
    {
        for (int j = 0; j <= 101 - 2; j++)
        {
            //์ธ์ ‘ํ•œ 4์นธ์˜ ์ •์‚ฌ๊ฐํ˜•์ด ๋ชจ๋‘ ๋“œ๋ž˜๊ณค์˜ ์ผ๋ถ€์ด๋ฉด
            if (map[i][j] == true && map[i][j + 1== true && map[i + 1][j] == true && map[i + 1][j + 1== true)
            {
                result++;
            }
        }
    }
 
    cout << result << '\n';
    return 0;
}
Colored by Color Scripter
๋ฐ˜์‘ํ˜•
Comments