<๋ฌธ์ ๋งํฌ>
https://www.acmicpc.net/problem/2072
2072๋ฒ: ์ค๋ชฉ
19x19ํฌ๊ธฐ์ ๋ฐ๋ํ์, ๋์ ๋์ ์ขํ๊ฐ ์ฃผ์ด์ง๋ฉด ์ด ๊ฒ์์ด ๋ช ์๋ง์ ๋๋๋ ์ง๋ฅผ ์์๋ณด๋ ค๊ณ ํ๋ค. ์ฌ์ฉํ๊ณ ์ ํ๋ ๋ฐ๋ํ์ ๋ชจ์์ ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ผ๋ฉฐ, (1, 1)์ด ๊ฐ์ฅ ์ผ์ชฝ ์์ ์ขํ์ด๊ณ (19
www.acmicpc.net
<ํ์ด ์ ๋ต>
1. ์ค๋ชฉ ์ฌ๋ถ ๊ฒ์ฆ ํจ์๋ฅผ ๋ง๋ค์ด์ ์๋ฅผ ๋ ๋๋ง๋ค ๊ฒ์ฆํ๋ฉด ๋๋ค
2. ํ, ์ด, ๋ ๋๊ฐ์ ์ ๋ํด ๊ตฌํํ๋ฉด ๋๋ค.
3. ์ก๋ชฉ์ด๋ 0 index ์กฐ์ฌํ๊ธฐ
4. bfs๋ dfs ํน์ ๊ทธ๋ฅ ๋ธํ ํ์์ผ๋ก๋ ํ ์ ์๋๋ฐ ์๊ฐํ๊ธฐ ๊ท์ฐฎ์์ ๋นก๊ตฌํ์ผ๋ก ํ์๋ค(์ฝ๋๋ ์ ์๊ฐ ๋ ๊น๋ํ๋ค)
<์ ๋ต ์ฝ๋>
import sys, os, io, atexit
input = lambda: sys.stdin.readline().rstrip('\r\n')
stdout = io.BytesIO()
sys.stdout.write = lambda s: stdout.write(s.encode("ascii"))
atexit.register(lambda: os.write(1, stdout.getvalue()))
# 221224 2072 ์ค๋ชฉ
# ์ ๋ต์ฝ๋
# ์ค๋ชฉ ์ฌ๋ถ ํ์ธ ํจ์
def check_five(r, c):
num = board[r][c]
# ํ ๊ฒ์ฆ
max_len = 0
cnt = 0
for i in range(r - 4, r + 5):
if 0 <= i < 19:
if board[i][c] == num:
cnt += 1
max_len = max(cnt, max_len)
else:
cnt = 0
if max_len == 5:
return True
# ์ด ๊ฒ์ฆ
max_len = 0
cnt = 0
for i in range(c - 4, c + 5):
if 0 <= i < 19:
if board[r][i] == num:
cnt += 1
max_len = max(cnt, max_len)
else:
cnt = 0
if max_len == 5:
return True
# ์ข์ -> ์ฐํ ๋๊ฐ์
max_len = 0
cnt = 0
for i in range(-4, 5):
if 0 <= r + i < 19 and 0 <= c + i < 19:
if board[r + i][c + i] == num:
cnt += 1
max_len = max(cnt, max_len)
else:
cnt = 0
if max_len == 5:
return True
# ์ฐ์ -> ์ขํ ๋๊ฐ์
max_len = 0
cnt = 0
for i in range(-4, 5):
if 0 <= r + i < 19 and 0 <= c - i < 19:
if board[r + i][c - i] == num:
cnt += 1
max_len = max(cnt, max_len)
else:
cnt = 0
if max_len == 5:
return True
# ์ค๋ชฉ ์๋ ์ False ๋ฐํ
return False
# board: ์ค๋ชฉํ
board = [[0 for _ in range(19)] for _ in range(19)]
# N: ์ค๋ชฉ ๋ ๋ ํ์
N = int(input())
for i in range(1, N + 1):
# r, c: ๋ฐ๋๋ ์์น
r, c = map(int, input().split())
# 0 ์ธ๋ฑ์ค ๋ณํ
r -= 1
c -= 1
if i % 2:
board[r][c] = 1
else:
board[r][c] = 2
# ์ค๋ชฉ์ด ๋ ๊ฒฝ์ฐ ์ ์ถ๋ ฅ ํ ์ข
๋ฃ
if check_five(r, c):
print(i)
exit()
# ์นํจ ์ ๋ ๊ฒฝ์ฐ
print(-1)
'โญ Problem_Solving > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 27942 :danceplant: (Python/ํ์ด์ฌ) (1) | 2023.04.12 |
---|---|
[๋ฐฑ์ค] 17070 ํ์ดํ ์ฎ๊ธฐ๊ธฐ1 (Python/ํ์ด์ฌ) (0) | 2023.04.04 |
[๋ฐฑ์ค] 5635 ์์ผ (Python/ํ์ด์ฌ) (2) | 2022.12.18 |
[๋ฐฑ์ค] 2239 ์ค๋์ฟ (Python/ํ์ด์ฌ) (0) | 2022.11.10 |
[๋ฐฑ์ค] 11559 Puyo Puyo (Python/ํ์ด์ฌ) (0) | 2022.11.10 |
๋๊ธ