[๋ฐฑ์ค] 20125 ์ฟ ํค์ ์ ์ฒด ์ธก์ with Python
๐ BOJ 20125 ์ฟ ํค์ ์ ์ฒด ์ธก์
๐ก ์กฐ๊ฑด
- ์ฟ ํค๋ค์ ์ ์ฒด๋ฅผ ์ธก์ ํ๊ธฐ ์ํด์ ํ ๋ณ์ ๊ธธ์ด๊ฐ N์ธ ์ ์ฌ๊ฐํ ํ ์์ ๋์์์ผ๋ฉฐ, ์ด๋ ์ ์ฒด ๋ถ์๋ ํ ๋ฐ์ผ๋ก ๋ฒ์ด๋์ง ์๋๋ค.
- ํ์ x๋ฒ์งธ ํ, y๋ฒ์งธ ์ด์ ์์นํ ๊ณณ์ (x, y)๋ก ์ง์นญํ๋ค. ํ์ ๋งจ ์ผ์ชฝ ์ ์นธ์ (1, 1), ์ค๋ฅธ์ชฝ ์๋ ์นธ์ (N, N)์ผ๋ก ๋ํ๋ผ ์ ์๋ค.
- ์ฟ ํค์ ์ ์ฒด๋ ๋จธ๋ฆฌ, ์ฌ์ฅ, ํ๋ฆฌ, ๊ทธ๋ฆฌ๊ณ ์ข์ฐ ํ, ๋ค๋ฆฌ๋ก ๊ตฌ์ฑ๋์ด ์๋ค.

๊ทธ๋ฆผ์์ ๋นจ๊ฐ ๊ณณ์ผ๋ก ์น ํด์ง ๋ถ๋ถ์ด ์ฌ์ฅ์ด๋ค. ๋จธ๋ฆฌ๋ ์ฌ์ฅ ๋ฐ๋ก ์ ์นธ์ 1์นธ ํฌ๊ธฐ๋ก ์๋ค.
์ผ์ชฝ ํ์ ์ฌ์ฅ ๋ฐ๋ก ์ผ์ชฝ์ ๋ถ์ด์๊ณ ์ผ์ชฝ์ผ๋ก ๋ป์ด ์์ผ๋ฉฐ, ์ค๋ฅธ์ชฝ ํ์ ์ฌ์ฅ ๋ฐ๋ก ์ค๋ฅธ์ชฝ์ ๋ถ์ด์๊ณ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ป์ด์๋ค.
ํ๋ฆฌ๋ ์ฌ์ฅ์ ๋ฐ๋ก ์๋ ์ชฝ์ ๋ถ์ด์๊ณ ์๋ ์ชฝ์ผ๋ก ๋ป์ด ์๋ค.
์ผ์ชฝ ๋ค๋ฆฌ๋ ํ๋ฆฌ์ ์ผ์ชฝ ์๋์, ์ค๋ฅธ์ชฝ ๋ค๋ฆฌ๋ ํ๋ฆฌ์ ์ค๋ฅธ์ชฝ ์๋์ ๋ฐ๋ก ๋ถ์ด์๊ณ , ๊ฐ ๋ค๋ฆฌ๋ค์ ์ ๋ถ ์๋์ชฝ์ผ๋ก ๋ป์ด ์๋ค.
๊ฐ ์ ์ฒด ๋ถ์๋ค์ ์ ๋๋ก ๋๊ฒจ์์ง ์์ผ๋ฉฐ ๊ตฝํ์ง ๊ณณ๋ ์๋ค.
๋ํ, ํ๋ฆฌ, ํ, ๋ค๋ฆฌ์ ๊ธธ์ด๋ 1 ์ด์์ด๋ฉฐ, ๋๋น๋ ๋ฌด์กฐ๊ฑด 1์ด๋ค.์ฟ ํค์ ์ ์ฒด๊ฐ ์ฃผ์ด์ก์ ๋ ์ฌ์ฅ์ ์์น์ ํ, ๋ค๋ฆฌ, ํ๋ฆฌ์ ๊ธธ์ด๋ฅผ ๊ตฌํ๋ ๋ฌธ์
5 โค N โค 1,000. N์ ํ์ ํ ๋ณ์ ๊ธธ์ด๋ฅผ ์๋ฏธํ๋ ์์ ์ ์๋ค.
ai,j๋ * ๋๋ _์ด๋ค. *๋ ์ฟ ํค์ ์ ์ฒด ๋ถ๋ถ์ด๊ณ , _๋ ์ฟ ํค์ ์ ์ฒด๊ฐ ์ฌ๋ผ๊ฐ ์์ง ์์ ์นธ์ ์๋ฏธํ๋ค. (1 โค i, j โค N)
์ฟ ํค์ ์ ์ฒด ์กฐ๊ฑด์ ์๋ฐฐ๋๋ ์ ๋ ฅ์ ์ฃผ์ด์ง์ง ์๋๋ค.
๊ตฌํ ์ ํ์ ๋ฌธ์
๐ฅ ์์ค ์ฝ๋
from sys import stdin
arr = []
n = int(stdin.readline())
for i in range(n):
arr.append(list(stdin.readline().rstrip()))
heo, l_leg, r_leg = 0, 0, 0
def find_heart():
for i in range(n):
for j in range(n):
if arr[i][j] == '*':
return (i, j), (i + 1, j)
head, heart = find_heart()
l_arm = arr[heart[0]][:heart[1]].count('*')
r_arm = arr[heart[0]][heart[1] + 1:].count('*')
for i in range(heart[0] + 1, n):
if arr[i][heart[1]] != '*':
last_heo = (i, heart[1])
break
else:
heo += 1
for i in range(last_heo[0], n):
if arr[i][heart[1] - 1] == '*':
l_leg += 1
if arr[i][heart[1] + 1] == '*':
r_leg += 1
print(heart[0] + 1, heart[1] + 1)
print(l_arm, r_arm, heo, l_leg, r_leg)๐ ์์ ๋ฐ ์คํ๊ฒฐ๊ณผ
์์
5
_____
__*__
_***_
__*__
_*_*_์คํ๊ฒฐ๊ณผ
3 3
1 1 1 1 1