이것이 코딩테스트다 예제 4-3 입니다.
□ 소스 코드
#include <bits/stdc++.h>
void royalNight(){
string input;
cin>> input;
char xArray[] = {'a','b','c','d','e','f','g','h'};
char yArray[] = {'1','2','3','4','5','6','7','8'};
int x = 0;
int y = 0;
for(int i=0;i<8;i++){
if(input[0] == xArray[i])
x = i+1;
if(input[1] == yArray[i])
y = i+1;
}
int mvHoriz[] = {2,2,-2,-2,1,-1,1,-1}; //수평으로 움직이는 경우의 수
int mvVerti[] = {1,-1,1,-1,2,2,-2,-2}; //수직으로 움직이는 경우의 수
int count = 0;
for(int i=0;i<8;i++)
if(mvHoriz[i]+x <= 8 && mvHoriz[i]+x >= 1)
if(mvVerti[i]+y <= 8 && mvVerti[i]+y >= 1)
count++;
cout<<count<<endl;
}
배열을 이용하여 움직이는 경우의 수를 미리 저장해두면 손쉽게 해결할 수 있는 문제이다.