Dev.baelanche

[백준 1074] Z 본문

Data Structure & Algorithm/PS - JAVA

[백준 1074] Z

baelanche 2019. 5. 7. 21:13
반응형

 

 

2^n * 2^n 의 배열에서 좌상, 우상, 좌하, 우하 순으로 분할하여 접근한다.

재귀를 이용하여 접근한 부분배열의 크기가 2*2 일때까지 접근하여 카운트를 세고

(r, c) 일때의 카운트를 출력해주면 된다.

 

public class Main {
    
    static int idx = 0;
    static int r;
    static int c;
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int n = sc.nextInt();
        int pow = (int)Math.pow(2, n);
        r = sc.nextInt();
        c = sc.nextInt();
        
        recursive(0, 0, pow);
    }
    
    public static void recursive(int s, int e, int len) {
        if(len == 2) {
            if(s == r && e == c) {
                System.out.println(idx);
                return;
            }
            idx++;
            if(s == r && e+1 == c) {
                System.out.println(idx);
                return;
            }
            idx++;
            if(s+1 == r && e == c) {
                System.out.println(idx);
                return;
            }
            idx++;
            if(s+1 == r && e+1 == c) {
                System.out.println(idx);
                return;
            }
            idx++;
            return;
        }
        
        int m = len/2;
        for(int i=0; i<2; i++) {
            for(int j=0; j<2; j++) {
                recursive(s + m*i, e + m*j, m);
            }
        }
    }
}
반응형

'Data Structure & Algorithm > PS - JAVA' 카테고리의 다른 글

[백준 2290] LCD Test  (0) 2019.05.08
[백준 2447] 별 찍기 - 10  (0) 2019.05.07
[백준 11000] 강의실 배정  (0) 2019.05.07
[백준 1931] 회의실배정  (0) 2019.05.07
[백준 1918] 후위표기식  (0) 2019.05.03
Comments