[BaekJoon] 1074 Z (java)

SeongWon Ohยท2021๋…„ 10์›” 2์ผ
0
post-thumbnail

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

https://www.acmicpc.net/problem/2747


๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ (์‹œ๊ฐ„์ดˆ๊ณผ)

์ฒ˜์Œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” Recursiveํ•˜๊ฒŒ ๋ชจ๋“  ๊ณต๊ฐ„์„ ํƒ์ƒ‰์„ ํ•˜์—ฌ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.
๋‚˜๋ฆ„๋Œ€๋กœ ํƒ์ƒ‰ ์„ฑ๊ณต์„ ํ•˜๋ฉด ๊ทธ ์ดํ›„์—๋Š” Recursiveํ•˜๊ฒŒ ์ดํ›„์˜ ํƒ์ƒ‰์„ ํ•˜์ง€ ์•Š๊ณ  return true๋ฅผ ํ•˜๊ฒŒ ํ•˜์˜€์œผ๋‚˜ ๊ทธ๋Ÿผ์—๋„ ๊ทธ ์ด์ „์— ํƒ์ƒ‰ํ•œ ๋‚ด์šฉ์ด ๋งŽ์•„์„œ์ธ์ง€ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	static int count;
	static int row;
	static int column;
	
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		int n = Integer.parseInt(st.nextToken());
		row = Integer.parseInt(st.nextToken());
		column = Integer.parseInt(st.nextToken());
		
		recursive((int)Math.pow(2, n), 0, 0);
		
		
	}
	
	public static boolean recursive(int n, int r, int c) {
		if (n == 2) {
			if (row ==r && column == c) {
				System.out.println(count);
				return true;
			}
			count++;
			
			if (row ==r && column == (c+1)) {
				System.out.println(count);
				return true;
			}
			count++;
			
			if (row ==(r+1) && column == c) {
				System.out.println(count);
				return true;
			}
			count++;
			
			if (row ==(r+1) && column == (c+1)) {
				System.out.println(count);
				return true;
			}
			count++;
			return false;
		}
		
		if (recursive(n/2, r, c)) return true;
		if (recursive(n/2, r, c + n/2)) return true;
		if (recursive(n/2, r + n/2, c)) return true;
		if (recursive(n/2, r + n/2, c + n/2)) return true;
		
		return false;
	}

}


๐Ÿ‘จ๐Ÿปโ€๐Ÿ’ป ๋‘๋ฒˆ์งธ๋กœ ์ž‘์„ฑํ•œ ์ฝ”๋“œ (ํ†ต๊ณผ)

๋Ÿฐํƒ€์ž„ ์‹œ๊ฐ„์„ ์ค„์ผ ๋ฐฉ๋ฒ•์ด ๋– ์˜ค๋ฅด์ง€ ์•Š์•„ ์ง€ํ˜œ๋กœ์šด ๊ฐœ๋ฐœ๋กœ๊ทธ์˜ ์ฝ”๋“œ๋ฅผ ์ฐธ์กฐํ–ˆ์Šต๋‹ˆ๋‹ค๐Ÿ˜ฅ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	static int count;
	
	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		int n = Integer.parseInt(st.nextToken());
		int row = Integer.parseInt(st.nextToken());
		int column = Integer.parseInt(st.nextToken());
		
		recursive((int)Math.pow(2, n), row, column);
		
		System.out.println(count);
		
	}
	
	public static void recursive(int n, int r, int c) {
		if(n==1)
			return;
		
		if (r < n/2 && c < n/2) {
			recursive(n/2, r, c);			
		}
		else if (r < n/2 && c >= n/2) {
			count += (n * n / 4);
			recursive(n/2, r, c-n/2);	
		}
		else if (r >= n/2 && c < n/2) {
			count += (n * n / 4) *2;
			recursive(n/2, r-n/2, c);	
		}
		else {
			count += (n * n / 4) * 3;
			recursive(n/2, r-n/2, c-n/2);	
		}
	}
}

profile
๋ธ”๋กœ๊ทธ ์ด์ „ํ–ˆ์Šต๋‹ˆ๋‹ค. -> https://seongwon.dev/

0๊ฐœ์˜ ๋Œ“๊ธ€