๐ฅSilver1
https://www.acmicpc.net/problem/2615
โ ์ ๋ตํ์ด
import sys
board = [list(map(int, sys.stdin.readline().split())) for _ in range(19)]
# → ↓ โ โ
move= [[1,0],[1,1],[0,1],[-1,1]]
N = 19
result = 0
for i in range(N):
for j in range(N):
if board[i][j] != 0: # ๋์ด ์๋ ์นธ์ด๋ฉด
stone = board[i][j]
for dy, dx in move:
ny, nx, cnt = i + dy, j + dx, 1
# index ํ์ธ, ์ฐ์์ผ๋ก ๋์ด ๋์ฌ์๋ค๋ฉด
while 0 <= ny < N and 0 <= nx < N and board[ny][nx] == stone:
cnt += 1
if cnt == 5: # ์ก๋ชฉ ํ์ธ
# ๋ฐ๋ ๋ฐฉํฅ ํ์ธ : ์์์ (i,j)๊ธฐ์ค์ผ๋ก
if 0 <= i - dy < N and 0 <= j - dx < N and board[i-dy][j-dx] == stone: # ๋ฐ๋์นธ์ ํ๋ ๋ ์๊ฑฐ๋
break
# ์ํ ๋ฐฉํฅ ํ์ธ
if 0 <= ny + dy < N and 0 <= nx + dx < N and board[ny+dy][nx+dx] == stone:
break
result=stone
y, x = i+1, j+1
ny += dy # ํด๋น ๋ฐฉํฅ์ผ๋ก ํ์นธ์ฉ ์ด๋
nx += dx
if result > 0:
print(result)
print(y,x)
else:
print(0)
์ฒ์์ 4๊ฐ์ง ๋ฐฉํฅ์ → ↓ โ โ ์ด๋ ๊ฒ๊ฐ ์๋๋ผ ํ๊ฐ ๋ฐฉํฅ์ ์๋ชป ์๊ฐํ๊ณ ์์๋ค..
ํ๊ฐ์ ์์๋ฅผ ๊ธฐ์ค์ผ๋ก ์ ๋ ๊ฒ 4๋ฐฉํฅ์ ๊ณ ๋ คํ๋ฉด ๋ชจ๋ ๊ฒฝ์ฐ์ ์์ฐจ์ ์ผ๋ก ํ์ํด ๋๊ฐ์์๋ค!
์ด์ค for๋ฌธ์ผ๋ก ์์๋ฅผ ์ํํ๋ฉด์ 0์ด์๋ ๋์ด ์กด์ฌํ๋ค๋ฉด, 4๊ฐ์ง ๋ฐฉํฅ์ผ๋ก ํ์ฌ๋(stone)๊ณผ ๊ฐ์๋์ด ์๋์ง ํ์ธํ๋ฉด๋๋ค.
while๋ฌธ์ผ๋ก ๋ฐฉํฅ๋ณ๋ก ์ธ๋ฑ์ค๊ฐ ๋ฌ๋ผ์ง๊ธฐ ๋๋ฌธ์, index๋ฒ์ ์ฒดํฌ๋ฅผ ํด์ฃผ๊ณ , ์ฐ์์ผ๋ก ๋์ด ์กด์ฌํ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
์ฐ๋ฆฌ์ ๋ชฉํ๋ ์ค๋ชฉ์ ์ฐพ๋๊ฒ์ด๋ฏ๋ก, count๊ฐ 5๊ฐ๋๋ฉด ์ก๋ชฉ์ธ์ง ์ฌ๋ถ๋ฅผ ํ์ธํด์ฃผ๋๋ฐ,
โ๏ธ๋ป์ด๋๊ฐ๋ ๋ฐฉํฅ์ ๊ฐ์์ ๋์ด ํ๋ ๋์๋์ง๋ง ํ์ธํ ๊ฒ์ด ์๋๋ผ ๋ฐ๋ํธ๋ ํ์ธ์ ํด์ฃผ์ด์ผํ๋ค! (์ด๊ฑด ์๊ฐํ์ง ๋ชปํ๋ค....)
์ก๋ชฉ์ด๋ผ๋ฉด, break๋ก ๋น ์ ธ๋๊ฐ๋ฉด ๋๊ณ , ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ์ถ๋ ฅํ ๋ณ์์ ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค!
'๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค-Python] ํ๋ฆฐํฐ ํ : 1966๋ฒ (0) | 2024.06.05 |
---|---|
[๋ฐฑ์ค-Python] ํ์ ํฐ๋จ๋ฆฌ๊ธฐ : 2346๋ฒ (1) | 2024.06.05 |
[๋ฐฑ์ค-Python] ์ค์์น ์ผ๊ณ ๋๊ธฐ : 1244๋ฒ (1) | 2024.06.04 |
[๋ฐฑ์ค-Python] ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ : 1018๋ฒ (0) | 2024.06.03 |
[๋ฐฑ์ค-Python] ๋์ธ ์๋ฆฌ๋ฅผ ์ฐพ์๋ผ : 1652๋ฒ (0) | 2024.06.03 |