-
[๋ฐฑ์ค] 14500 ํ ํธ๋ก๋ฏธ๋ ธ with PythonPS 2022. 2. 2. 17:34728x90๋ฐ์ํ
๐ BOJ 14500 ํ ํธ๋ก๋ฏธ๋ ธ
๐ก ์กฐ๊ฑด
ํฌ๊ธฐ๊ฐ NรM์ธ ์ข ์ด ์์ ํ ํธ๋ก๋ฏธ๋ ธ ํ๋๋ฅผ ๋์ผ๋ ค๊ณ ํ๋ค. ์ข ์ด๋ 1ร1 ํฌ๊ธฐ์ ์นธ์ผ๋ก ๋๋์ด์ ธ ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ์นธ์๋ ์ ์๊ฐ ํ๋ ์ฐ์ฌ ์๋ค.
ํ ํธ๋ก๋ฏธ๋ ธ ํ๋๋ฅผ ์ ์ ํ ๋์์ ํ ํธ๋ก๋ฏธ๋ ธ๊ฐ ๋์ธ ์นธ์ ์ฐ์ฌ ์๋ ์๋ค์ ํฉ์ ์ต๋๋ก ํด์ผํ๋ค.
ํ ํธ๋ก๋ฏธ๋ ธ๋ ๋ฐ๋์ ํ ์ ์ฌ๊ฐํ์ด ์ ํํ ํ๋์ ์นธ์ ํฌํจํ๋๋ก ๋์์ผ ํ๋ฉฐ, ํ์ ์ด๋ ๋์นญ์ ์์ผ๋ ๋๋ค.
์ข ์ด์ ์ธ๋ก ํฌ๊ธฐ N๊ณผ ๊ฐ๋ก ํฌ๊ธฐ M์ด ์ฃผ์ด์ง๋ค. (4 โค N, M โค 500)
N๊ฐ์ ์ค์ ์ข ์ด์ ์ฐ์ฌ ์๋ ์๊ฐ ์ฃผ์ด์ง๋ค. i๋ฒ์งธ ์ค์ j๋ฒ์งธ ์๋ ์์์๋ถํฐ i๋ฒ์งธ ์นธ, ์ผ์ชฝ์์๋ถํฐ j๋ฒ์งธ ์นธ์ ์ฐ์ฌ ์๋ ์์ด๋ค.
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ์๋ 1,000์ ๋์ง ์๋ ์์ฐ์์ด๋ค.S์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin tetro = { # ใ 0: [[(0, 0), (0, 1), (1, 0), (1, 1)]], # ใฑ,ใด 1: [[(0, 0), (0, 1), (0, 2), (-1, 0)], [(0, 0), (0, 1), (0, 2), (1, 0)], [(0, 0), (0, 1), (0, 2), (1, 2)], [(0, 0), (0, 1), (0, 2), (-1, 2)], [(0, 0), (-1, 0), (-2, 0), (0, 1)], [(0, 0), (-1, 0), (-2, 0), (0, -1)], [(0, 0), (1, 0), (2, 0), (0, -1)], [(0, 0), (1, 0), (2, 0), (0, 1)]], # ใ ก, ใ ฃ 2: [[(0, 0), (0, 1), (0, 2), (0, 3)], [(0, 0), (1, 0), (2, 0), (3, 0)]], # ใ , ใ 3: [[(0, 0), (1, -1), (1, 0), (1, 1)], [(0, 0), (-1, -1), (-1, 0), (-1, 1)], [(0, 0), (0, 1), (-1, 1), (1, 1)], [(0, 0), (0, -1), (-1, -1), (1, -1)]], # ใน - = 4: [[(0, 0), (1, 0), (1, 1), (2, 1)], [(0, 0), (0, 1), (-1, 1), (-1, 2)], [(0, 0), (1, 0), (1, -1), (2, -1)], [(0, 0), (0, 1), (1, 1), (1, 2)]] } n, m = map(int, stdin.readline().split()) board = [] for _ in range(n): board.append(list(map(int, stdin.readline().split()))) def get_value(x, y, blocks): global res for block in blocks: value = 0 for i, j in block: nx, ny = i + x, j + y if -1 < nx < n and -1 < ny < m: value += board[nx][ny] else: break res = max(res, value) res = -int(1e9) for x in range(5): blocks = tetro[x] for i in range(n): for j in range(m): get_value(i, j, blocks) print(res)
๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
5 5 1 2 3 4 5 5 4 3 2 1 2 3 4 5 6 6 5 4 3 2 1 2 1 2 1
์คํ๊ฒฐ๊ณผ
19
โจ๏ธ ๋ฌธ์ ํ์ด
ํ ํธ๋ก๋ฏธ๋ ธ๊ฐ ๋ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์ขํ๋ฅผ tetro ๋ผ๋ ๋์ ๋๋ฆฌ์ ์ ์ฅํ๋ค.
์ข ์ด์ ํฌ๊ธฐ์ ์ข ์ด์ ์จ์๋ ์ซ์๋ฅผ ์ ๋ ฅ๋ฐ์ ๊ฐ ๋ณ์ ๋ฐ ๋ฆฌ์คํธ์ ์ ์ฅํ๋ค.
๊ฐ ํ ํธ๋ก๋ฏธ๋ ธ๊ฐ ์์นํ ์ ์๋ ๋ชจ์์ ๋ํด์ ์ํํ๋ฉด์, ๊ฐ ์ขํ์์ ๋์ ์ ์๋ ํ ํธ๋ก๋ฏธ๋ ธ ๋ชจ์์ด ๊ฐ์ง ์ ์๋ ๊ฐ ์ค ์ต๋๊ฐ์ ๊ตฌํ๋ค.
ํ ํธ๋ก๋ฏธ๋ ธ์ ์ขํ๋ tetro ๋ผ๋ ๋ณ์์์ ์ด๋ฏธ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์, ๊ธฐ์ค์ด ๋๋ ์ขํ (i, j)์์ ๋์ ์ ์๋์ง ์๋์ง๋ ๊ตฌ๋ถํ ์ ์๋ค.
res ๋ผ๋ ๋ณ์๊ฐ ์ต์ข ์ ์ผ๋ก ๋ต์ ์ถ๋ ฅํ ๋ณ์, value ๊ฐ ์ขํ (i, j) ์ ์์น์์ ๋์ ์ ์๋ ํ ํธ๋ก๋ฏธ๋ ธ ๋ชจ์์์์ ๊ฐ์ ์๋ฏธํ๋ค.๊ฐ ํ ํธ๋ก๋ฏธ๋ ธ, ์ขํ๊ฐ์ ์ํํ๊ณ ๊ฐฑ์ ํ ๊ฐ ์ค ์ต๋๊ฐ์ ๊ฐ์ง๊ณ ์๋ res ๋ฅผ ์ถ๋ ฅํ๋ค.
๐พ ๋๋์
- ํ ํธ๋ก๋ฏธ๋ ธ ๋ชจ์์ ์ผ์ผํ ์ขํ๋ก ์ ํด๋๊ณ ํ์ด์ผํ๋ค๊ณ ์๊ฐํ์ง ๋ชปํ๋ค.
- (1)๋ฒ๊ณผ ๊ฐ์ ์๊ฐ์ ํด์ผํ๋ ๋ฌธ์ ๊ฐ ์๋, ์์์ ๋ถํฐ bfs๋ก ํ ํธ๋ก๋ฏธ๋ ธ ๋ชจ์์ ๊ณ์ฐํด์ ํ์ด์ผํ๋ค๊ณ ์๊ฐํ๋ค๊ฐ ํฐ ์ฝ ๋ค์น ๋ปํ๋ค.
- ํ ํธ๋ก๋ฏธ๋ ธ ๋ชจ์์ ์ขํ๋ก ์ ํด๋๊ณ ๋์๋ ๊ทธ๋ฆฌ ์ด๋ ค์ด ๋ฌธ์ ๊ฐ ์๋์๋ค.
๋ฐ์ํ'PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 16234 ์ธ๊ตฌ ์ด๋ with Python (0) 2022.02.03 [๋ฐฑ์ค] 15658 ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (2) with Python (0) 2022.02.02 [๋ฐฑ์ค] 9933 ๋ฏผ๊ท ์ด์ ๋น๋ฐ๋ฒํธ with Python (0) 2022.02.02 [๋ฐฑ์ค] 1904 01ํ์ผ with Python (0) 2022.02.02 [๋ฐฑ์ค] 1094 ๋ง๋๊ธฐ with Python (0) 2022.02.01