Dazzling 개발 노트

[백준] 1074 - Z (Java) 본문

Algorithm/백준

[백준] 1074 - Z (Java)

dj._.dazzling 2023. 7. 4. 17:41

[백준] 1074 - Z (Java)

문제

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

 

1074번: Z

한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을

www.acmicpc.net

풀이/후기

처음 풀이가 꽤 마음에 들었는데 배열의 크기가 3 이상이 되면서 잘 안됐당...

검색해보니 당연히 모든 배열을 다 채운 후에 답을 얻어내는 접근은 시간초과가 난다고 한다.

주어진 특정 부분만 돌아야 하므로 문제에서 주어진 r과 c가 어느 구역에 포함되는지를 판단해야 한다.

풀다가 막혀서 검색을 했었는데,

내 코드랑 가장 비슷한 코드를 비교하면서 풀었는데 아무리 해도 답이 안나왔다...

뭔가 이상해서 전부 지우고 그사람 코드를 돌려봤더니 여기도 오답...ㅎ ㅜㅜㅜㅜ 시간 버렸다...

그래서 다시 새로운 풀이로 어찌어찌 완성하긴 했다....

코드

import java.io.*;
import java.util.*;

public class Main {
	static int size = 1;
	static int N, r, c;

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());

		N = Integer.parseInt(st.nextToken());
		r = Integer.parseInt(st.nextToken());
		c = Integer.parseInt(st.nextToken());

		size = (int) Math.pow(2, N);

		int count = 0;
		int x = 0;
		int y = 0;

		while (size > 0) {
			size /= 2;			//배열을 점점 줄여감
			int nextR = x + size;
			int nextC = y + size;
			
			//배열의 시작점
			if (r < nextR && c < nextC) {		//1구역
				count += 0;
				
			} else if (r < nextR) {				//2구역
				count += size * size;
				y += size;
				
			} else if (c < nextC) {				//3구역
				count += size * size * 2;
				x += size;
				
			} else {							//4구역
				count += size * size * 3;
				x += size;
				y += size;
			}

			// 배열이 1*1이 되면 종료
			if (size == 1) {
				System.out.println(count);
				break;
			}
		}

	}

}

 

Commit

https://github.com/allrightDJ0108/CodingTestStudy/commit/1425500d886bb8515312d0fdcf25384abffba8b9

 

Baekjoon #1074 · allrightDJ0108/CodingTestStudy@1425500

allrightDJ0108 committed Jul 4, 2023

github.com

참고

https://velog.io/@lifeisbeautiful/Java-%EB%B0%B1%EC%A4%80-1074%EB%B2%88-Z-%EC%9E%90%EB%B0%94

 

[Java] 백준 1074번 [Z] 자바

[Java] 백준 1074번 [Z] 자바

velog.io