ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

10942๋ฒˆ: ํŒฐ๋ฆฐ๋“œ๋กฌ?

์ด M๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ ํ™์ค€์ด์˜ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋ช…์šฐ์˜ ๋‹ต์„ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ˆœ์„œ์— ๋”ฐ๋ผ์„œ ์ถœ๋ ฅํ•œ๋‹ค. ํŒฐ๋ฆฐ๋“œ๋กฌ์ธ ๊ฒฝ์šฐ์—๋Š” 1, ์•„๋‹Œ ๊ฒฝ์šฐ์—๋Š” 0์„ ์ถœ๋ ฅํ•œ๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 ์ˆ˜์—ด์ด ์ฃผ์–ด์ง€๊ณ , ์ˆ˜์—ด ์ค‘ ์ผ๋ถ€๋ฅผ ์„ ํƒํ•  ๋•Œ ์„ ํƒํ•œ ๋ถ€๋ถ„์ด ํšŒ๋ฌธ(Palindrome)์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ’€๊ธฐ ์ „๊นŒ์ง€๋Š” ์‹œ๊ฐ„์ด ์ถฉ๋ถ„ํžˆ ์ฃผ์–ด์ง€๋Š” ํšŒ๋ฌธ ๋ฌธ์ œ๋“ค์„ ํ’€์–ด์„œ, ๋‹จ์ˆœํžˆ list๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํšŒ๋ฌธ์„ ์ฐพ์•˜๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋ฌธ์ œ๋Š” ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ํ’€๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 ๋‹ค๋ฅธ DP ๋ฌธ์ œ๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ํ†ตํ•ด ๊ธธ์ด๊ฐ€ 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๋Š˜๋ ค๊ฐ€๋ฉฐ ํšŒ๋ฌธ์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋ฆฌ์ŠคํŠธ์— ๊ธฐ๋กํ•ด๋‘๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

 ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง€์ •๋œ ๋ฒ”์œ„์— ๋”ฐ๋ผ ํšŒ๋ฌธ์˜ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  • ๊ธธ์ด๊ฐ€ 1์ธ ๊ฒฝ์šฐ
    • ๋ฌด์กฐ๊ฑด ํšŒ๋ฌธ์ด๋‹ค.
  • ๊ธธ์ด๊ฐ€ 2์ธ ๊ฒฝ์šฐ
    • ์‹œ์ž‘๊ณผ ๋์ด ๋™์ผํ•œ ๋ฌธ์ž์ด๋ฉด ํšŒ๋ฌธ์ด๋‹ค.
  • ๊ธธ์ด๊ฐ€ 3์ด์ƒ์ธ ๊ฒฝ์šฐ
    • ์‹œ์ž‘๊ณผ ๋์ด ๊ฐ™๊ณ  dp[์‹œ์ž‘  + 1][๋ - 1]์ด ํšŒ๋ฌธ์ด๋ฉด ํšŒ๋ฌธ์ด๋‹ค.

 

์ฝ”๋“œ

from sys import stdin


if __name__ == "__main__":
    n = int(stdin.readline())
    seq = list(map(int, stdin.readline().split()))
    m = int(stdin.readline())
    sections = [list(map(int, stdin.readline().split())) for _ in range(m)]
    dp = [[0] * n for _ in range(n)]
    dp[0][0] = 1

    for i in range(1, n):
        # ๊ธธ์ด๊ฐ€ 1์ด๋ฉด ํšŒ๋ฌธ.
        dp[i][i] = 1

        # ๊ธธ์ด 2์˜ ํšŒ๋ฌธ ํ™•์ธ.
        if seq[i - 1] == seq[i]:
            dp[i - 1][i] = 1

    for i in range(2, n):
        for j in range(n - i):
            # ๊ธธ์ด 3์ด์ƒ์˜ ํšŒ๋ฌธ ํ™•์ธ.
            if seq[j] == seq[i + j] and dp[j + 1][i + j - 1]:
                dp[j][i + j] = 1

    for section in sections:
        s, e = section
        print(dp[s - 1][e - 1])

 ์œ„์˜ ์ฝ”๋“œ์™€ ๊ฐ™์ด ๊ธธ์ด๊ฐ€ 1, 2์ธ ํšŒ๋ฌธ์„ ๋จผ์ € ์ฒดํฌํ•œ ํ›„, 2์ค‘ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ๊ธธ์ด 3 ์ด์ƒ์˜ ํšŒ๋ฌธ์„ ์ฒดํฌํ•œ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€