본문 바로가기

알고리즘

rook

import java.util.Scanner;
public class Main{
    // 이해 -> 킹이 룩에 잡힐까 안잡힐까
    // 입력 8곱하기 8 맵 (0->공백) (1->킹) (2->룩) (3->장애물)
    // 출력 킹이 룩에 잡히면 1, 룩에게 안 잡히면 0
    
    // 1] 맵을 입력받는다. (1~8) (주변은 -1로 초기화하자)
    // 2] 킹의 좌표를 뽑는다.
    // 3] --> 가는길에 3만나면 break, -1 만나도 break, 2만나면1출력하고 종료
    // 4] <-- (same)
    // 5] 위,아래도 (same)
    // 6] 3,4,5 했는데 안만는거면 0 출력하고 종료
    
    public static int[][] arr = new int[20][20];
    public static void main(String[] args){

      Scanner scan = new Scanner(System.in);
      inputMap(scan);
      
      
      int sero=0;int garo=0;
      
      for(int i=1;i<=8;i++)
      {
        for(int j=1;j<=8;j++)
        {
          if(arr[i][j]==1){sero=i;garo=j;break;}
        }
      }
      
      // System.out.println(sero+" "+garo);
      
      // ->
      for(int i=garo+1;i<=8;i++)
      {
        if(arr[sero][i]==3) break;
        if(arr[sero][i]==2){System.out.println(1);return;}
      }
      // <-
      for(int i=garo-1;i>=0;i--)
      {
        if(arr[sero][i]==3)  break;
        if(arr[sero][i]==2){System.out.println(1);return;}
      }
      for(int i=sero+1;i<=8;i++)
      {
        if(arr[i][garo]==3)break;
        if(arr[i][garo]==2){System.out.println(1);return;}
      }
      //System.out.println("????");
      for(int i=sero-1;i>=0;i--)
      {
        if(arr[i][garo]==3)break;
        if(arr[i][garo]==2){System.out.println(1);return;}
      }
      
      System.out.println(0);
      // return;
      
      
      scan.close();
    }
    
    public static void inputMap(Scanner scan)
    {
      for(int i=1;i<=8;i++)
      {
        for(int j=1;j<=8;j++)
        {
          arr[i][j]=scan.nextInt();
        }
      }
    }
}

'알고리즘' 카테고리의 다른 글

중복없는구간  (0) 2019.08.07
직사각형배치경우의수  (0) 2019.08.02
maxofarr  (0) 2019.08.01
행렬뒤집기  (0) 2019.08.01
상자색 칠하기  (0) 2019.08.01