이것이 취업을 위한 코딩 테스트다. with 파이썬 - 나동빈
public class HorseOfWangsil {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] split = br.readLine().split("");
int answer = 0;
String[] columns = new String[]{"a", "b", "c", "d", "e", "f", "g", "h"};
int[][] pos = new int[][]{{1, -2}, {-1, -2}, {-2, -1}, {-2, 1}, {-1, 2}, {1, 2}, {2, 1}, {2, -1}};
int column = 1;
for(int i = 0; i < columns.length; i++) {
if(columns[i].equals(split[0])) {
column = i + 1;
}
}
int row = Integer.parseInt(split[1]);
for(int i = 0; i < 8; i++) {
int tempCol = column;
int tempRow = row;
tempRow += pos[i][0];
tempCol += pos[i][1];
if(tempRow < 1 || tempCol < 1 || tempRow > 8 || tempCol > 8) continue;
answer++;
}
System.out.println(answer);
}
}
String[] columns = new String[]{"a", "b", "c", "d", "e", "f", "g", "h"};
int[][] pos = new int[][]{{1, -2}, {-1, -2}, {-2, -1}, {-2, 1}, {-1, 2}, {1, 2}, {2, 1}, {2, -1}};
int column = 1;
for(int i = 0; i < columns.length; i++) {
if(columns[i].equals(split[0])) {
column = i + 1;
}
}
int row = Integer.parseInt(split[1]);
for(int i = 0; i < 8; i++) {
int tempCol = column;
int tempRow = row;
tempRow += pos[i][0];
tempCol += pos[i][1];
if(tempRow < 1 || tempCol < 1 || tempRow > 8 || tempCol > 8) continue;
answer++;
}
column 변수의 값을 굳이 반복문을 돌리지 않고도 충분히 구할 수 있었다.
int column =(split[0].charAt(0) - 'a') + 1;
그리고 continue 를 사용하지 않고 그냥 해당 범위 내에 있을 경우에만 +1을 해주고 있다.
if(tempRow >= 1 && tempCol >= 1 && tempRow <= 8 && tempCOl <= 8) answer++;