문제링크 : https://velog.io/@suzieep/Algorithm-%EC%9D%B4%EC%BD%94%ED%85%8C-%EC%99%95%EC%8B%A4%EC%9D%98-%EB%82%98%EC%9D%B4%ED%8A%B8-%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

[Algorithm] (이코테) 왕실의 나이트- 파이썬

교재 : 이것이 코딩 테스트다 with 파이썬CHAPTER 4 구현실전문제 4-3 왕실의 나이트 114p행복 왕국의 왕실 정원은 체스판과 같은 8 × 8 좌표 평면이다. 왕실 정원의 특정한 한 칸에 나이트가 서있다.나

velog.io

 

pg115~117

 

항상 문제보면서, 어떻게하면 간단하게 문제를 풀 수 있을까 생각합니다.

너무 복잡하게 생각하지 않습니다.

예로들면

1.8x8 배열을 만드는 것을 먼저 생각했음. 

-> 이러면 안된다.

2.도착지점만 생각해서 하면됬는데, 그 과정에서 체크할지에 대해서 고민했음

-> 체크도 해야하긴하겠지만, 그랬으면 애초에 나이트 이동방식이 달랐을 것입니다.

 

 

 

public class Main {
public static String str;
// 나이트가 이동할 수 있는 8가지 방향 정의
public static int[] dx = {-2,-1,1,2,2,1,-1,-2};
public static int[] dy = {-1,-2,-2,-1,1,2,2,1};
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
str = sc.nextLine();
int row = str.charAt(1) - '0';
int column = str.charAt(0) - 'a'+1;
// 8가지 방향에 대하여 각위치로 이동이 가능한지 확인
int result = 0;
for(int i=0;i<8;i++) {
int nextRow = row + dx[i];
int nextColumn = column + dy[i];
// 해당위치로 이동이 가능하다면 카운트 증가
if(nextRow >= 1 && nextRow <=8 && nextColumn >= 1 && nextColumn <=8) {
result += 1;
}
}
System.out.println(result);
}
}

+ Recent posts