๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
2๏ธโƒฃ Java/Problem Solving

[Java Algorithm] Z BOJ #1074

by seolhee2750 2022. 8. 16.
๋ฌธ์ œ

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

 

1074๋ฒˆ: Z

ํ•œ์ˆ˜๋Š” ํฌ๊ธฐ๊ฐ€ 2N × 2N์ธ 2์ฐจ์› ๋ฐฐ์—ด์„ Z๋ชจ์–‘์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 2×2๋ฐฐ์—ด์„ ์™ผ์ชฝ ์œ„์นธ, ์˜ค๋ฅธ์ชฝ ์œ„์นธ, ์™ผ์ชฝ ์•„๋ž˜์นธ, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜์นธ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฉ๋ฌธํ•˜๋ฉด Z๋ชจ์–‘์ด๋‹ค. N > 1์ธ ๊ฒฝ์šฐ, ๋ฐฐ์—ด์„

www.acmicpc.net

 

๋‚ด ๋ฌธ์ œ ํ’€์ด
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class BOJ_1074 {
	
	static int n, r, c, cnt;
	
	public static void move(int len, int r, int c) {
		if(len == 1) return; // ์šฐ๋ฆฌ๊ฐ€ ์ฐพ๋˜ ๋”ฑ ํ•œ ์นธ๋งŒ ๋‚จ์„ ๋•Œ ๋ฐ˜ํ™˜
		
		len /= 2; // 4๋“ฑ๋ถ„ํ•œ ํ•œ ๋ณ€์˜ ๊ธธ์ด
		if(r < len && c < len) { // 1
			move(len, r, c);
		} else if(r < len && c < len*2) { // 2
			cnt += len*len;
			move(len, r, c-len);
		} else if(r < len*2 && c < len) { // 3
			cnt += len*len*2;
			move(len, r-len, c);
		} else if(r < len*2 && c < len*2) { // 4
			cnt += len*len*3;
			move(len, r-len, c-len);
		}
	}

	public static void main(String[] args) throws Exception {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(in.readLine());
		n = Integer.parseInt(st.nextToken());
		r = Integer.parseInt(st.nextToken());
		c = Integer.parseInt(st.nextToken());
		
		move((int)Math.pow(2, n), r, c);
		System.out.println(cnt);
	}

}

๐Ÿ‘‰ ๋ถ„ํ•  ์ •๋ณต, ์žฌ๊ท€ ๋ฌธ์ œ

 

โœ”๏ธ ์ด ๋ฌธ์ œ๋Š”,, ์ง€๋ฌธ์—,, ๋‹ต์ด ์žˆ๋‹ค,,!!

์ง€๋ฌธ์—์„œ ๋งํ•˜๋Š” ๊ทธ๋Œ€๋กœ, ํ•œ ๋ณ€์ด 2^N์ธ 2์ฐจ์› ๋ฐฐ์—ด์„ ํฌ๊ฒŒ 4๋“ฑ๋ถ„์œผ๋กœ ๋‚˜๋ˆ„๊ณ ,

ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฌธ ์ฒดํฌ๋ฅผ ํ•ด ์ค€ ๋’ค, ๊ทธ ๋‹ค์Œ์—” ๋” ์ž‘์€ ๋ฒ”์œ„์˜ ๋ฐฐ์—ด์„ 4๋“ฑ๋ถ„์œผ๋กœ ๋‚˜๋ˆ„๊ณ ,, ๋ฐฉ๋ฌธ์ฒดํฌ,, ๋‚˜๋ˆ„๊ณ ,,

๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ์žฌ๊ท€๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋ฉด ๋œ๋‹ค.

 

โœ”๏ธ ์šฐ์„  ์ฒ˜์Œ ์ฃผ์–ด์ง„ r, c ์ž๋ฆฌ๊ฐ€ ๋ฐฐ์—ด์„ 4๋“ฑ๋ถ„ ํ–ˆ์„ ๋•Œ ์–ด๋””์— ์œ„์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ–ˆ๋‹ค.
Z ๋ชจ์–‘์œผ๋กœ ๋ฐฉ๋ฌธํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋‚ด๊ฐ€ ์†ํ•œ ๋“ฑ๋ถ„๋ณด๋‹ค ์™ผ์ชฝ ํ˜น์€ ์œ„์ชฝ์— ์œ„์น˜ํ•˜๋Š” ๊ณณ์— ๋Œ€ํ•ด์„œ๋Š”
๊ตณ์ด ์ „๋ถ€ ํƒ์ƒ‰ํ•  ํ•„์š”๊ฐ€ ์—†๊ณ , ๊ทธ๋ƒฅ ํ•ด๋‹น ๋“ฑ๋ถ„ ์นธ ๊ฐœ์ˆ˜๋ฅผ ๋ชจ๋‘ ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

โœ”๏ธ ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ, r, c๋ฅผ ์ขŒ์ธก ์ƒ๋‹จ์œผ๋กœ ์ ์  ์˜ฎ๊ฒจ๊ฐ€๋ฉด์„œ

๋ฐฐ์—ด์˜ ๋ฒ”์œ„๋ฅผ ์ ์ฐจ ์ค„์—ฌ๊ฐ€๋Š” ๋กœ์ง์œผ๋กœ ์žฌ๊ท€๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค.

 

๐Ÿ’ก ํ”ผ๋“œ๋ฐฑ
  • ๊ฝค๋‚˜ ๋นก์„ผ ์žฌ๊ท€๋ฌธ์ œ์˜€๋‹ค. ์žฌ๊ท€๋Š” ์–ธ์ œ๋‚˜ ์–ด๋ ต๋”ฐ !

๋Œ“๊ธ€