반응형

Cos Pro 1급 기출문제 - 1차 문제 6, 체스의 나이트 에 대한 C언어를 이용한 저의 풀이입니다.

 

목차

  • 문제 설명
  • 매개변수 설명
  • return 값 설명
  • 예제
  • ***풀이 전략***
  • 문제와 답

 

문제 설명

---

 

 

 

매개변수 설명

---

 

return 값 설명

---

예제

---

문제와 답

 

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
int solution(char* pos) {
    int answer = 0;
      char row = pos[0];
        char col = pos[1];
    
        
        for (int i = 0; i < 8; i++
        { // 8칸 중에서
            char new_row = pos[0];
            char new_col = pos[1];
            char add_row = 0;
            char add_col = 0;
            switch (i)
            {
                case 0: add_row = +1; add_col = +2break;
                case 1: add_row = +2; add_col = +1break;
                case 2: add_row = +2; add_col = -1break;
                case 3: add_row = +1; add_col = -2break;
                case 4: add_row = -1; add_col = -2break;
                case 5: add_row = -2; add_col = -1break;
                case 6: add_row = -2; add_col = +1break;
                case 7: add_row = -1; add_col = +2break;
            }
            // 이동시켰을 때, 범위를 보고..
            new_row = row + add_row;
            new_col = col + add_col;
            //printf("%d - %c%c\n",i, new_row, new_col);
            if (new_row < 'A' || new_row > 'H')
                continue;
            if (new_col < '1' || new_col > '8')
                continue;
            answer += 1;
        }
    return answer;
}
int main() {
    char* pos = "A7";
    int ret = solution(pos);
 
    printf("solution 함수의 반환 값은 %d 입니다.\n", ret);
}
cs

 

풀이 전략

나이트의 이동 규칙은 switch case 로 나누었으며

char를 ASCII 테이블로 변환했을 때, 위아래 범위를 정해줄 수 있겠다 하는 아이디어에서 출발하여

체스칸의 경계를 계산한다.

728x90

+ Recent posts