๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 12887_๊ฒฝ๋กœ ๊ฒŒ์ž„

๋ฟŒ์•ผ._. 2024. 6. 14. 12:26

Gold V

๋ฌธ์ œ(์ถœ์ฒ˜: https://www.acmicpc.net/problem/12887)

< ๊ฒฝ๋กœ ๊ฒŒ์ž„ >

 

๋ฌธ์ œ ํ’€์ด 

 

ํ–‰์˜ ๊ฐœ์ˆ˜๊ฐ€ ํ•ญ์ƒ 2์ด๋ฏ€๋กœ 0๋ฒˆ์งธ ํ–‰๊ณผ 1๋ฒˆ์งธ ํ–‰์—์„œ ์‹œ์ž‘ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•œ๋‹ค. ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋Š” ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•˜๊ณ , ์ด๋™ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ์œ„ ๋˜๋Š” ์•„๋ž˜๋กœ ์ด๋™ํ•œ๋‹ค. ์ด (๊ฒฉ์žํŒ์˜ ์นธ ์ˆ˜ - ๊ฒ€์€์ƒ‰ ์นธ ์ˆ˜ - ์ด๋™ ์นธ ์ˆ˜)๋ฅผ ๊ตฌํ•œ๋‹ค.

 

 

 my solution (Java)

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

public class _12887_ { // ๊ฒฝ๋กœ ๊ฒŒ์ž„
	static boolean arr[][];
	static int dx[] = { 0, -1, 1 };
	static int dy[] = { 1, 0, 0 };

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

		int m = Integer.parseInt(bf.readLine());

		arr = new boolean[2][m];

		int black = 0;
		for (int i = 0; i < 2; i++) {
			String str = bf.readLine();
			for (int j = 0; j < m; j++) {
				if (str.charAt(j) == '#') {
					arr[i][j] = true;
					black += 1;
				} else {
					arr[i][j] = false;
				}
			}
		}

		int result = 0;

		if (!arr[0][0]) {
			int cnt = check(0, 0);
			if (result < 2 * m - cnt - black) {
				result = 2 * m - cnt - black;
			}
		}

		if (!arr[1][0]) {
			int cnt = check(1, 0);
			if (result < 2 * m - cnt - black) {
				result = 2 * m - cnt - black;
			}
		}
		System.out.println(result);
	}

	private static int check(int x, int y) {

		int cnt = 1;

		while (y < arr[0].length - 1) {
			for (int i = 0; i < 3; i++) {
				int a = x + dx[i];
				int b = y + dy[i];
				if (a >= 0 && a < 2 && b >= 0 && b < arr[0].length && !arr[a][b]) {
					cnt += 1;
					if (b == arr[0].length - 1) {
						return cnt;
					}
					x = a;
					y = b;
					break;
				}
			}
		}
		return cnt;
	}
}
๋ณ€์ˆ˜)
m : ์—ด์˜ ๊ฐœ์ˆ˜
arr : ๊ฒฉ์žํŒ ์ •๋ณด
black : ๊ฒ€์€์ƒ‰ ์นธ ์ˆ˜
str : ํ–‰ ์ •๋ณด
result : ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ํ•˜์–€์ƒ‰ ์นธ์˜ ๊ฐœ์ˆ˜์˜ ์ตœ๋Œ“๊ฐ’ 
cnt : ๊ฒฝ๋กœ ์นธ ์ˆ˜

 

์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ๊ฒฉ์žํŒ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ฒ€์€์ƒ‰์ผ ๋•Œ true๋กœ ์ €์žฅํ•˜๊ณ  ํ•˜์–€์ƒ‰์ผ ๋•Œ false๋กœ ์ €์žฅํ•œ๋‹ค. ๊ฒฉ์žํŒ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋ฉด์„œ ๊ฒ€์€์ƒ‰ ์นธ ์ˆ˜๋ฅผ ๊ตฌํ•œ๋‹ค. [0,0] ๋ฒˆ์งธ๊ฐ€ ํ•˜์–€์ƒ‰ ์นธ์ด๋ผ๋ฉด check ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. [1,0] ๋ฒˆ์งธ๊ฐ€ ํ•˜์–€์ƒ‰ ์นธ์ด๋ผ๋ฉด check ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค. ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ ๋ฐ›์€ ๊ฒฝ๋กœ ์นธ ์ˆ˜์™€ ๊ฒ€์€์ƒ‰ ์นธ ์ˆ˜๋ฅผ ์ด ๊ฒฉ์žํŒ ์ˆ˜์—์„œ ๋บ€๋‹ค. ์ด ๊ฐ’์ด ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ํ•˜์–€์ƒ‰ ์นธ์˜ ์ˆ˜์ด๋ฏ€๋กœ result์™€ ๋น„๊ตํ•ด ์ตœ๋Œ“๊ฐ’์„ ๊ตฌํ•œ๋‹ค.     

 

์ตœ์ข… result๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

check(int x, int y)

๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์—ด์— ๋„์ฐฉํ•˜๊ธฐ ์ „๊นŒ์ง€ ๋‹ค์Œ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ ๊ฐ€๋Šฅ ํ•˜๋‹ค๋ฉด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ํ•œ๋‹ค. ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ด๋™ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์œ„ ๋˜๋Š” ์•„๋ž˜๋กœ ์ด๋™ํ•œ๋‹ค. ์ด๋•Œ ์ด๋™ ์นธ ์ˆ˜๋ฅผ ์„ผ๋‹ค. ๋งŒ์•ฝ ๊ฐ€์žฅ ์˜ค๋ฅธ์ชฝ ์—ด์— ๋„์ฐฉํ–ˆ๋‹ค๋ฉด ๋ฐ”๋กœ ์ข…๋ฃŒํ•œ๋‹ค.


์ฒ˜์Œ์—๋Š” ๋ฐฉ๋ฌธ์ฒ˜๋ฆฌ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฒฝ๋กœ๋ฅผ ๊ตฌํ•œ ํ›„ ๊ฒ€์€์ƒ‰ ์นธ์ด ์•„๋‹ˆ๊ณ  ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๊ณณ์„ ์ฐพ์•„ ๋‹ต์„ ๊ตฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ–ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค๋ฅผ ๋ฐ›์•˜๊ณ  ๋ฏธ๋ฆฌ ์ˆ˜๋ฅผ ์„ธ๋Š” ๊ฒƒ๊ณผ ์–ด๋””์„œ ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค.