문제링크 : 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