๋ฌธ์ (์ถ์ฒ: 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์ ์ถ๋ ฅํด ์ค๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1446_์ง๋ฆ๊ธธ (0) | 2023.12.06 |
---|---|
[Baekjoon] 4883_์ผ๊ฐ ๊ทธ๋ํ (2) | 2023.12.05 |
[Baekjoon] 2529_๋ถ๋ฑํธ (1) | 2023.12.01 |
[Baekjoon] 1890_์ ํ (1) | 2023.11.30 |
[Baekjoon] 1495_๊ธฐํ๋ฆฌ์คํธ (0) | 2023.11.29 |