[C언어] 15685. 드래곤 커브

SW 업무 관련/백준

[C언어] 15685. 드래곤 커브

WillBe_ 2018. 10. 14. 23:44


진짜 왠만하면 풀이 검색 안 하려고 노력하는데, 이거는 검색해버렸다. 정답률이 진짜 50% 말이 됨??규칙 안 떠오르면 진짜 이건 노답인데ㅜ,ㅠ 시험 때 이런거 안 나왔으며누,ㅠ


접근법


0G : 0

1G : 0, 1

2G : 0 1, 2 1

3G : 0 1 2 1, 2 3 2 1

4G : 0 1 2 1 2 3 2 1, 1 2 3 2 3 3 2


자!!규칙이 보이는가!!! 0~3은 방향을 나타낸다.


3G를 예로 들면 0 1 2 1은 2G와 동일 2 3 2 1은 0 1 2 1을 뒤에서부터 1씩 더한 것이다.


0 1 2 1 -> 2 3 2 1


최정적으로는 (x + 1) %4해준다...ㅎㅎ


그걸 배열에 그래...사각형 카운트만 해주면 된다.


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
#include <stdio.h>
#include <string.h>
 
typedef struct
{
    int x, y, d, g;
}Dragon;
 
int map[111][111];
Dragon D;
int arr[1024*2= { 0, };
 
int main()
{
    int N;
    scanf("%d",&N);
 
    for (int n = 0; n < N; n++)
    {
        scanf("%d %d %d %d"&D.x, &D.y, &D.d, &D.g);
 
        int Top = 0, Bottom = 0;
 
        arr[++Top] = D.d;
 
        for (int gg = 0; gg < D.g; gg++)
        {
            Bottom = Top;
            while(Bottom--)
            {
                arr[++Top] = (arr[Bottom + 1+ 1) % 4;
            }
        }
 
        int x = D.x, y = D.y;
        map[y][x] = 1;
        for (int i = 1; i <= Top; i++)
        {
            switch (arr[i])
            {
            case 0:
                map[y][x + 1= 1;
                x += 1;
                break;
            case 1:
                map[y - 1][x] = 1;
                y -= 1;
                break;
            case 2:
                map[y][x - 1= 1;
                x -= 1;
                break;
            case 3:
                map[y + 1][x] = 1;
                y += 1;
                break;
 
            }
        }
    }
 
 
        int count = 0;
        for (int i = 0; i <= 100; i++)
        {
            for (int j = 0; j <= 100; j++)
            {
                if (map[i][j] && map[i + 1][j] && map[i][j + 1&& map[i + 1][j + 1])
                    count++;
            }
        }
 
        printf("%d",count);
 
    return 0;
}
cs


'SW 업무 관련 > 백준' 카테고리의 다른 글

[C언어] 15684. 사다리 조작  (474) 2018.10.16
[C언어] 12100. 2048(EASY)  (415) 2018.10.15
[C언어] 14500 테트로미노  (404) 2018.10.14
[C언어] 14501. 퇴사  (0) 2018.10.09
[C언어] 9207. 페그 솔리테어  (0) 2018.10.03