๋ฌธ์ ๋งํฌ: https://www.acmicpc.net/problem/10942
ํ์ด
๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ ๋ฌธ์ ์๋ค. ๋ถ๋ถ ์์ด์ ํฐ๋ฆฐ๋๋กฌ ์ฌ๋ถ๋ฅผ ์ด์ฉํ๋ฉด ์ ์ฒด ์์ด์ ํฐ๋ฆฐ๋๋กฌ ์ฌ๋ถ๋ฅผ ๊ตฌํ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
(1) ์ ํ์ ์ธ์ฐ๊ธฐ
๋ถ๋ถ ์์ด์ ์ด์ฉํด ํ์ฌ ์์ด์ ํฐ๋ฆฐ๋๋กฌ ์ฌ๋ถ๋ฅผ ์ด๋ป๊ฒ ํ์ธํ ์ ์์๊น?
1. ์ ๋ ์ซ์๋ฅผ ์ ์ธํ ๋ถ๋ถ ์์ด์ด ํฐ๋ฆฐ๋๋กฌ์ด๊ณ ,
2. ์ ๋ ์ซ์๊ฐ ๊ฐ์ผ๋ฉด
ํด๋น ์์ด๋ ํฐ๋ฆฐ๋๋กฌ์ด๋ค.
์ด๋ฅผ ์ฝ๋๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
if(dp[i+1][j-1]==1 && num[i]==num[j]) {
dp[i][j] = 1;
}
์ฌ๊ธฐ์ ์ธ๋ฑ์ค ์๋ฌ๋ฅผ ๋ฐฉ์งํ๋ ค๋ฉด i+1 <= j-1
์ด์ด์ผ ํ๋ฏ๋ก, 2 <= j-i
๊ฐ ๋๋ค.
๋ฐ๋ผ์ ๊ธธ์ด๊ฐ 2 ์ดํ์ธ ๋ถ๋ถ์์ด์ dp๊ฐ์ ๋ฐ๋ก ์ด๊ธฐํ์์ผ์ฃผ์ด์ผ ํ๋ค.
(2) ์ด๊ธฐํ
๊ธธ์ด๊ฐ 1์ธ ๋ถ๋ถ์์ด์ ํญ์ ํฐ๋ฆฐ๋๋กฌ์ด๋ค. ๋ฐ๋ผ์ ํญ์ dp[i][i]=1
์ด๋ค.
๊ธธ์ด๊ฐ 2์ธ ๋ถ๋ถ์์ด์ ๋ ์ซ์๊ฐ ๊ฐ์ผ๋ฉด ํฐ๋ฆฐ๋๋กฌ์ด๋ค. ๋ฐ๋ผ์ if(num[i]==num[i+1]) dp[i][i+1]=1
์ด ๋๋ค.
๊ธธ์ด๊ฐ 2 ์ดํ์ธ ๋ชจ๋ ๋ถ๋ถ์์ด์ ํฐ๋ฆฐ๋๋กฌ ์ฌ๋ถ๋ฅผ ๊ตฌํ๋ ๋ฐ๋ณต๋ฌธ ํ๋๋ฅผ ์ถ๊ฐํ๋ฉด ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
for(int i=0; i<N; i++) {
dp[i][i] = 1;
if(i<N-1 && num[i]==num[i+1]) {
dp[i][i+1] = 1;
}
}
์ ์ฒด ์ฝ๋
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main_10942_ํฐ๋ฆฐ๋๋กฌ {
static int N, M;
static int[] num;
static int[][] dp;
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
num = new int[N];
dp = new int[N][N];
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i=0; i<N; i++) {
num[i] = Integer.parseInt(st.nextToken());
}
for(int i=0; i<N; i++) {
dp[i][i] = 1;
if(i<N-1 && num[i]==num[i+1]) {
dp[i][i+1] = 1;
}
}
for (int k=2; k<N; k++) {
for (int i=0; i<N-k; i++) {
int j = i+k;
if(dp[i+1][j-1]==1 && num[i]==num[j]) {
dp[i][j] = 1;
}
}
}
M = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int i=0; i<M; i++) {
st = new StringTokenizer(br.readLine());
int s = Integer.parseInt(st.nextToken())-1;
int e = Integer.parseInt(st.nextToken())-1;
sb.append(dp[s][e] + "\n");
}
System.out.println(sb.toString());
}
}
'๐๐ฅ๐ ๐จ๐ซ๐ข๐ญ๐ก๐ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ด์ปจ (0) | 2023.09.04 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฝ๋ฉ ํ ์คํธ ๊ณต๋ถ (0) | 2023.08.31 |
[๋ฐฑ์ค 6086] ์ต๋ ์ ๋ (0) | 2023.08.28 |
[๋ฐฑ์ค 1062] ๊ฐ๋ฅด์นจ (0) | 2023.08.28 |
[๋ฐฑ์ค 2342] Dance Dance Revolution (0) | 2023.08.27 |