[๋ฐฑ์ค€/python] 1987๋ฒˆ : ์•ŒํŒŒ๋ฒณ

2021. 9. 16. 09:56

๋ฌธ์ œ

์„ธ๋กœ R์นธ, ๊ฐ€๋กœ C์นธ์œผ๋กœ ๋œ ํ‘œ ๋ชจ์–‘์˜ ๋ณด๋“œ๊ฐ€ ์žˆ๋‹ค. ๋ณด๋“œ์˜ ๊ฐ ์นธ์—๋Š” ๋Œ€๋ฌธ์ž ์•ŒํŒŒ๋ฒณ์ด ํ•˜๋‚˜์”ฉ ์ ํ˜€ ์žˆ๊ณ , ์ขŒ์ธก ์ƒ๋‹จ ์นธ (1ํ–‰ 1์—ด) ์—๋Š” ๋ง์ด ๋†“์—ฌ ์žˆ๋‹ค.

๋ง์€ ์ƒํ•˜์ขŒ์šฐ๋กœ ์ธ์ ‘ํ•œ ๋„ค ์นธ ์ค‘์˜ ํ•œ ์นธ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ƒˆ๋กœ ์ด๋™ํ•œ ์นธ์— ์ ํ˜€ ์žˆ๋Š” ์•ŒํŒŒ๋ฒณ์€ ์ง€๊ธˆ๊นŒ์ง€ ์ง€๋‚˜์˜จ ๋ชจ๋“  ์นธ์— ์ ํ˜€ ์žˆ๋Š” ์•ŒํŒŒ๋ฒณ๊ณผ๋Š” ๋‹ฌ๋ผ์•ผ ํ•œ๋‹ค. ์ฆ‰, ๊ฐ™์€ ์•ŒํŒŒ๋ฒณ์ด ์ ํžŒ ์นธ์„ ๋‘ ๋ฒˆ ์ง€๋‚  ์ˆ˜ ์—†๋‹ค.

์ขŒ์ธก ์ƒ๋‹จ์—์„œ ์‹œ์ž‘ํ•ด์„œ, ๋ง์ด ์ตœ๋Œ€ํ•œ ๋ช‡ ์นธ์„ ์ง€๋‚  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋ง์ด ์ง€๋‚˜๋Š” ์นธ์€ ์ขŒ์ธก ์ƒ๋‹จ์˜ ์นธ๋„ ํฌํ•จ๋œ๋‹ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— R๊ณผ C๊ฐ€ ๋นˆ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ฃผ์–ด์ง„๋‹ค. (1 ≤ R,C ≤ 20) ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ R๊ฐœ์˜ ์ค„์— ๊ฑธ์ณ์„œ ๋ณด๋“œ์— ์ ํ˜€ ์žˆ๋Š” C๊ฐœ์˜ ๋Œ€๋ฌธ์ž ์•ŒํŒŒ๋ฒณ๋“ค์ด ๋นˆ์นธ ์—†์ด ์ฃผ์–ด์ง„๋‹ค.

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋ง์ด ์ง€๋‚  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์˜ ์นธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

์ •๋‹ต

import sys
input = sys.stdin.readline

R, C = map(int, input().split())
board = [list(input().strip()) for _ in range(R)]

answer = 0
tmp = [(0, 1), (0, -1), (1, 0), (-1, 0)]

stack = set([(0, 0, board[0][0])])  # set์œผ๋กœ ์•ˆํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ
while stack:
    x, y, v = stack.pop()
    answer = max(answer, len(v))

    for _x, _y in tmp:
        a = x+_x
        b = y+_y
        if 0 <= a < R and 0 <= b < C and board[a][b] not in v:
            stack.add((a, b, v+board[a][b]))

print(answer)

tmp์— ์ƒํ•˜์ขŒ์šฐ๋กœ ์ด๋™ํ•˜๋Š” ์ขŒํ‘œ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.

 

stack์—๋Š” setํ˜•ํƒœ๋กœ ํ˜„์žฌ ์œ„์น˜์™€ ๋ฐฉ๋ฌธํ•œ ์•ŒํŒŒ๋ฒณ ๋ฌธ์ž์—ด์„ ๋„ฃ๋Š”๋‹ค.

์ฒ˜์Œ์—๋Š” ์‹œ์ž‘์  (0, 0)๊ณผ (0, 0) ์œ„์น˜์˜ ์•ŒํŒŒ๋ฒณ์„ ๋„ฃ๋Š”๋‹ค.

 

stack์—์„œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์–ด ์‚ดํŽด๋ณธ๋‹ค.

์šฐ์„  ํ˜„์žฌ๊นŒ์ง€ ๋ฐฉ๋ฌธํ•œ ์•ŒํŒŒ๋ฒณ ๊ธธ์ด๋ฅผ answer์™€ ๋น„๊ตํ•˜์—ฌ ๋” ํฐ ์ˆ˜๋กœ ๊ฐฑ์‹ ํ•œ๋‹ค.

 

์ดํ›„ ์ƒํ•˜์ขŒ์šฐ ์ขŒํ‘œ๊ฐ’์„ a์™€ b์— ์ €์žฅํ•˜์—ฌ

์ธ๋ฑ์Šค ๋ฒ”์œ„ ์•ˆ์— ๋“ค์–ด์˜ค๊ณ  ๋ฐฉ๋ฌธํ•œ ์ ์ด ์—†๋Š” ๊ฒฝ์šฐ(board[a][b] not in v)

stack์— ๋‹ค์Œ ์œ„์น˜์ธ (a, b)์™€ ํ˜„์žฌ๊นŒ์ง€ ๋ฐฉ๋ฌธํ•œ ์•ŒํŒŒ๋ฒณ + ํ˜„์žฌ ์œ„์น˜์˜ ์•ŒํŒŒ๋ฒณ ๋ฌธ์ž์—ด์„ ๋„ฃ๋Š”๋‹ค.

728x90

BELATED ARTICLES

more