강의로 돌아가기
freshmea@gmail.com

테스트 케이스 3번만 안됩니다....

2단계로 나누어서 4방향으로 이동하고 체크 하는 알고리즘을 생각 했는데, 3번만 안됩니다... 혹시 이 코드의 문제점 보이시는 분이 잇는지요..... ㅠㅠ

작성중인 코드―solution.c
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int* solution(const char*** places, size_t places_rows, size_t places_cols) {
    int* answer = (int*)malloc(5);
    char places_2 [5][9][9]={0};
    int result;
    int results[4];
    for(int i=0;i<5;i++){
        for(int j=0;j<5;j++){
            for(int k=0;k<5;k++){
                places_2[i][j+2][k+2]=places[i][j][k];
            }
        }
    }

    for(int i=0;i<5;i++){
        answer[i]=1;
        for(int j=2;j<7;j++){
            for(int k=2;k<7;k++){
            if(places_2[i][j][k] == 'P'){
                result = 0;
                for(int l=0;l<4;l++){
                    switch(l){
                        case 0:
                            j++;
                            break;
                        case 1:
                            j--;
                            break;
                        case 2:
                            k++;
                            break;
                        case 3:
                            k--;
                            break;
                    }
                    if(places_2[i][j][k] == 'P') result += 2;
                    if(places_2[i][j][k] == 'X') result -= 1;
                    if(result >=2) answer[i] = 0;
                    results[0]=result;
                    results[1]=result;
                    results[2]=result;
                    results[3]=result;
                    for(int m=0;m<4;m++){
                        switch(m){
                            case 0:
                                if(l != 1) j++;
                                break;
                            case 1:
                                if(l != 0) j--;
                                break;
                            case 2:
                                if(l != 3) k++;
                                break;
                            case 3:
                                if(l != 2) k--;
                                break;
                        }
                        if(places_2[i][j][k] == 'P') results[m] += 2;
                        if(results[m] >= 2) answer[i] = 0; 
                        switch(m){
                            case 0:
                                if(l != 1) j--;
                                break;
                            case 1:
                                if(l != 0) j++;
                                break;
                            case 2:
                                if(l != 3) k--;
                                break;
                            case 3:
                                if(l != 2) k++;
                                break;
                        }
                    }
                    switch(l){
                        case 0:
                            j--;
                            break;
                        case 1:
                            j++;
                            break;
                        case 2:
                            k--;
                            break;
                        case 3:
                            k++;
                            break;
                    }

                }
            }
            }
        }
    }
    return answer;
}
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.