[BOJ][๐ก4][๋ฐฑ์ค#10942] ํฐ๋ฆฐ๋๋กฌ?
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold IV
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
๋ช ์ฐ๋ ํ์ค์ด์ ํจ๊ป ํฐ๋ฆฐ๋๋กฌ ๋์ด๋ฅผ ํด๋ณด๋ ค๊ณ ํ๋ค. ๋จผ์ , ํ์ค์ด๋ ์์ฐ์ N๊ฐ๋ฅผ ์น ํ์ ์ ๋๋ค. ๊ทธ ๋ค์, ๋ช ์ฐ์๊ฒ ์ง๋ฌธ์ ์ด M๋ฒ ํ๋ค. ๊ฐ ์ง๋ฌธ์ ๋ ์ ์ S์ E(1 โค S โค E โค N)๋ก ๋ํ๋ผ ์ ์์ผ๋ฉฐ, S๋ฒ์งธ ์๋ถํฐ E๋ฒ์งธ ๊น์ง ์๊ฐ ํฐ๋ฆฐ๋๋กฌ์ ์ด๋ฃจ๋์ง๋ฅผ ๋ฌผ์ด๋ณด๋ฉฐ, ๋ช ์ฐ๋ ๊ฐ ์ง๋ฌธ์ ๋ํด ํฐ๋ฆฐ๋๋กฌ์ด๋ค ๋๋ ์๋๋ค๋ฅผ ๋งํด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด, ํ์ค์ด๊ฐ ์น ํ์ ์ ์ ์๊ฐ 1, 2, 1, 3, 1, 2, 1๋ผ๊ณ ํ์.
S = 1, E = 3์ธ ๊ฒฝ์ฐ 1, 2, 1์ ํฐ๋ฆฐ๋๋กฌ์ด๋ค. S = 2, E = 5์ธ ๊ฒฝ์ฐ 2, 1, 3, 1์ ํฐ๋ฆฐ๋๋กฌ์ด ์๋๋ค. S = 3, E = 3์ธ ๊ฒฝ์ฐ 1์ ํฐ๋ฆฐ๋๋กฌ์ด๋ค. S = 5, E = 7์ธ ๊ฒฝ์ฐ 1, 2, 1์ ํฐ๋ฆฐ๋๋กฌ์ด๋ค.
์์ฐ์ N๊ฐ์ ์ง๋ฌธ M๊ฐ๊ฐ ๋ชจ๋ ์ฃผ์ด์ก์ ๋, ๋ช ์ฐ์ ๋๋ต์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์์ด์ ํฌ๊ธฐ N (1 โค N โค 2,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ํ์ค์ด๊ฐ ์น ํ์ ์ ์ ์ N๊ฐ๊ฐ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์น ํ์ ์ ์ ์๋ 100,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ์ ์งธ ์ค์๋ ํ์ค์ด๊ฐ ํ ์ง๋ฌธ์ ๊ฐ์ M (1 โค M โค 1,000,000)์ด ์ฃผ์ด์ง๋ค. ๋ท์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์๋ ํ์ค์ด๊ฐ ๋ช ์ฐ์๊ฒ ํ ์ง๋ฌธ S์ E๊ฐ ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ด M๊ฐ์ ์ค์ ๊ฑธ์ณ ํ์ค์ด์ ์ง๋ฌธ์ ๋ํ ๋ช ์ฐ์ ๋ต์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ์์์ ๋ฐ๋ผ์ ์ถ๋ ฅํ๋ค. ํฐ๋ฆฐ๋๋กฌ์ธ ๊ฒฝ์ฐ์๋ 1, ์๋ ๊ฒฝ์ฐ์๋ 0์ ์ถ๋ ฅํ๋ค.
์์
์ ๋ ฅ
7
1 2 1 3 1 2 1
4
1 3
2 5
3 3
5 7
์ถ๋ ฅ
1
0
1
1
My Sol
import sys
input = sys.stdin.readline
sys.setrecursionlimit(500000)
def expand_pal(s, e):
global nums, N, mat
if s < 0 or e >= N: return
if nums[s] != nums[e]: return
mat[s][e] = 1
expand_pal(s-1, e+1)
N = int(input())
nums = list(input().split())
mat = [[0]*N for _ in range(N)]
for i in range(N):
mat[i][i] = 1
expand_pal(i-1, i+1)
for i in range(N-1):
if nums[i] != nums[i+1]: continue
mat[i][i+1] = 1
expand_pal(i-1, i+2)
T = int(input())
for _ in range(T):
s, e = map(lambda x: int(x)-1, input().split())
print(mat[s][e])
DP๋ฅผ ์ฌ์ฉํ๋ ๋ฌธ์ ์๋ค. ์ฌ์คโฆ DP๋ฅผ ์ฌ์ฉํ๊ฑด๊ฐ ์ถ๊ธฐ๋ ํ๋ค. ์ค์ด๋ ๋ฐฉ์์ ์ฌ์ฉํ ์ง, ๋ป์ณ๋๊ฐ๋ ๋ฐฉ์์ ์ฌ์ฉํ ์ง ์ ํํด์ผ ํ๊ณ , ๋๋ ๋ป์ณ๋๊ฐ๋ ๋ฐฉ์์ ์ฌ์ฉํ๊ธฐ๋ก ํ์๋ค.
ํ์ด์ ํต์ฌ์ ํฐ๋ฆฐ๋๋กฌ์ ์์๊ณผ ํ์ฅ์ด๋ค.
- ํ ๊ฐ์ ์์๋ ํฐ๋ฆฐ๋๋กฌ์ด๋ค.
- 2๊ฐ์ ์์๊ฐ ์๋ก ๊ฐ๋ค๋ฉด ํฐ๋ฆฐ๋๋กฌ์ด๋ค.
- ํฐ๋ฆฐ๋๋กฌ์ ์ ๋์ ์์๊ฐ ์๋ก ๊ฐ๋ค๋ฉด ํฐ๋ฆฐ๋๋กฌ์ด๋ค.
- ์์ ์ธ๋ฑ์ค s๋ฅผ ํ, ๋ ์ธ๋ฑ์ค e๋ฅผ ์ด๋ก ํ๋ 2์ฐจ์ ๋ฐฐ์ด์ ์ด๊ธฐํํ๋ค.
- ์์ ํฐ๋ฆฐ๋๋กฌ์ ์์ ์กฐ๊ฑด 2๊ฐ์ง๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ฅ ์ฌ๊ท๋ฅผ ์งํํ๋ฉฐ mat์ ์ฑ์ด๋ค.
mat[s][e]
๋ฅผ ์ถ๋ ฅํ๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋๊ธ๋จ๊ธฐ๊ธฐ