๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 12026_BOJ ๊ฑฐ๋ฆฌ

๋ฟŒ์•ผ._. 2023. 12. 4. 13:59

Silver I

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

< BOJ ๊ฑฐ๋ฆฌ >

 

๋ฌธ์ œ ํ’€์ด 

 

์ด์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด๋„๋ธ”๋ก์„ ์ „์ฒด ํƒ์ƒ‰ํ•œ๋‹ค. B -> O -> J ์ˆœ์„œ๋กœ ํ™•์ธํ•˜๋ฉด์„œ ์ตœ์†Ÿ๊ฐ’์„ ์ฐพ๋Š”๋‹ค.

 

 my solution (Java)

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

public class _12026_ { // BOJ ๊ฑฐ๋ฆฌ

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

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

		char arr[] = new char[n];
		String str = bf.readLine();
		for (int i = 0; i < str.length(); i++) {
			arr[i] = str.charAt(i);
		}

		int result[] = new int[n];

		for (int i = 0; i < n; i++) {
			for (int j = i + 1; j < n; j++) {
				if (result[i] != 0 || i == 0) {
					if ((arr[i] == 'B' && arr[j] == 'O') || (arr[i] == 'O' && arr[j] == 'J')
							|| (arr[i] == 'J' && arr[j] == 'B')) {
						if (result[j] == 0 || result[j] > result[i] + ((j - i) * (j - i)))
							result[j] = result[i] + ((j - i) * (j - i));
					}
				}
			}
		}

		if (n > 1 && result[n - 1] == 0) {
			System.out.println(-1);
		} else {
			System.out.println(result[n - 1]);
		}
	}
}
๋ณ€์ˆ˜)
n : ๋ณด๋„๋ธ”๋ก ๊ฐœ์ˆ˜
arr, str : ๋ณด๋„๋ธ”๋ก ๊ธ€์ž
result : ์ด๋™ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์—๋„ˆ์ง€ ์–‘์˜ ์ตœ์†Ÿ๊ฐ’

 

์ด์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณด๋„๋ธ”๋ก ์ „์ฒด๋ฅผ ํƒ์ƒ‰ํ•œ๋‹ค. ์ด๋ฏธ ๋ฐฉ๋ฌธํ•œ ๊ณณ์ด๊ฑฐ๋‚˜ ์Šคํƒ€ํŠธ๋ผ๋ฉด ๋‹ค์Œ ์ด๋™ํ•  ๊ณณ์„ ์ฐพ๋Š”๋‹ค. B๋ผ๋ฉด O์ธ ๊ณณ์„, O๋ผ๋ฉด J์ธ ๊ณณ์„, J๋ผ๋ฉด B์ธ ๊ณณ์„ ์ฐพ์€ ํ›„ ์•„์ง ํ•œ ๋ฒˆ๋„ ๋ฐฉ๋ฌธํ•œ ์ ์ด ์—†๊ฑฐ๋‚˜ ์›๋ž˜ ์—๋„ˆ์ง€๋ณด๋‹ค ์ ์€ ์—๋„ˆ์ง€๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ฐ’์„ ์—…๋ฐ์ดํŠธํ•ด ์ค€๋‹ค.

 

์ตœ์ข… ๋งํฌ ๊ฐ’์ด 0์ด๋ผ๋ฉด ์Šคํƒ€ํŠธ๊ฐ€ ๋งํฌ๋ฅผ ๋งŒ๋‚  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๋ฏ€๋กœ -1์„ ์ถœ๋ ฅํ•˜๊ณ  0์ด ์•„๋‹ˆ๋ผ๋ฉด ๋งํฌ ๊ฐ’์„ ์ถœ๋ ฅํ•ด ์ค€๋‹ค.

 

* n์ด 1์ผ ๊ฒฝ์šฐ ์Šคํƒ€ํŠธ์™€ ๋งํฌ๊ฐ€ ์ผ์น˜ํ•˜๋ฏ€๋กœ 0์„ ์ถœ๋ ฅํ•ด ์ค€๋‹ค.