[BOJ][๐ก3][๋ฐฑ์ค#14890] ๊ฒฝ์ฌ๋ก
์์ฑ:    
์ ๋ฐ์ดํธ:
์นดํ ๊ณ ๋ฆฌ: BOJ Gold III
๋ฌธ์ ์ถ์ฒ
๋ฌธ์
ํฌ๊ธฐ๊ฐ NรN์ธ ์ง๋๊ฐ ์๋ค. ์ง๋์ ๊ฐ ์นธ์๋ ๊ทธ ๊ณณ์ ๋์ด๊ฐ ์ ํ์ ธ ์๋ค.ย ์ค๋์ ์ด ์ง๋์์ ์ง๋๊ฐ ์ ์๋ ๊ธธ์ด ๋ช ๊ฐ ์๋์ง ์์๋ณด๋ ค๊ณ ํ๋ค. ๊ธธ์ด๋ ํ ํ ๋๋ ํ ์ด ์ ๋ถ๋ฅผ ๋ํ๋ด๋ฉฐ, ํ์ชฝ ๋์์ ๋ค๋ฅธ์ชฝ ๋๊น์ง ์ง๋๊ฐ๋ ๊ฒ์ด๋ค.ย ๋ค์๊ณผ ๊ฐ์ N=6์ธ ๊ฒฝ์ฐ ์ง๋๋ฅผ ์ดํด๋ณด์.
์ด๋, ๊ธธ์ ์ด 2N๊ฐ๊ฐ ์์ผ๋ฉฐ, ์๋์ ๊ฐ๋ค.
๊ธธ์ ์ง๋๊ฐ ์ ์์ผ๋ ค๋ฉด ๊ธธ์ ์ํ ๋ชจ๋ ์นธ์ย ๋์ด๊ฐ ๋ชจ๋ ๊ฐ์์ผ ํ๋ค. ๋๋, ๊ฒฝ์ฌ๋ก๋ฅผ ๋์์ ์ง๋๊ฐ ์ ์๋ ๊ธธ์ ๋ง๋ค ์ ์๋ค. ๊ฒฝ์ฌ๋ก๋ ๋์ด๊ฐ ํญ์ 1์ด๋ฉฐ, ๊ธธ์ด๋ย L์ด๋ค. ๋, ๊ฐ์๋ ๋งค์ฐ ๋ง์ ๋ถ์กฑํ ์ผ์ด ์๋ค. ๊ฒฝ์ฌ๋ก๋ ๋ฎ์ ์นธ๊ณผ ๋์ ์นธ์ ์ฐ๊ฒฐํ๋ฉฐ, ์๋์ ๊ฐ์ ์กฐ๊ฑด์ ๋ง์กฑํด์ผํ๋ค.
๊ฒฝ์ฌ๋ก๋ ๋ฎ์ ์นธ์ ๋์ผ๋ฉฐ, L๊ฐ์ ์ฐ์๋ ์นธ์ ๊ฒฝ์ฌ๋ก์ ๋ฐ๋ฅ์ด ๋ชจ๋ ์ ํด์ผ ํ๋ค. ๋ฎ์ ์นธ๊ณผ ๋์ ์นธ์ ๋์ด ์ฐจ์ด๋ 1์ด์ด์ผ ํ๋ค. ๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ๋ฎ์ ์นธ์ ๋์ด๋ ๋ชจ๋ ๊ฐ์์ผ ํ๊ณ , L๊ฐ์ ์นธ์ด ์ฐ์๋์ด ์์ด์ผ ํ๋ค.
์๋์ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ์ ์๋ค.
๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ๊ณณ์ ๋ ๊ฒฝ์ฌ๋ก๋ฅผ ๋๋ ๊ฒฝ์ฐ ๋ฎ์ ์นธ๊ณผ ๋์ ์นธ์ ๋์ด ์ฐจ์ด๊ฐ 1์ด ์๋ ๊ฒฝ์ฐ ๋ฎ์ ์ง์ ์ ์นธ์ ๋์ด๊ฐ ๋ชจ๋ ๊ฐ์ง ์๊ฑฐ๋, L๊ฐ๊ฐ ์ฐ์๋์ง ์์ ๊ฒฝ์ฐ ๊ฒฝ์ฌ๋ก๋ฅผ ๋๋ค๊ฐ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ ๊ฒฝ์ฐ
L = 2์ธ ๊ฒฝ์ฐ์ ๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ์ ์๋ ๊ฒฝ์ฐ๋ฅผ ๊ทธ๋ฆผ์ผ๋ก ๋ํ๋ด๋ฉด ์๋์ ๊ฐ๋ค.
๊ฒฝ์ฌ๋ก๋ฅผ ๋์ ์ ์๋ ๊ฒฝ์ฐ๋ ์๋์ ๊ฐ๋ค.
์์ ๊ทธ๋ฆผ์ ๊ฐ์ฅ ์ผ์ชฝ๋ถํฐ 1๋ฒ, 2๋ฒ, 3๋ฒ, 4๋ฒ ์์ ๋ผ๊ณ ํ์ ๋, 1๋ฒ์ ๋์ด ์ฐจ์ด๊ฐ 1์ด ์๋๋ผ์, 2๋ฒ์ ๊ฒฝ์ฌ๋ก๋ฅผ ๋ฐ๋ฅ๊ณผ ์ ํ๊ฒ ๋์ง ์์์, 3๋ฒ์ ๊ฒน์ณ์ ๋์์, 4๋ฒ์ ๊ธฐ์ธ์ด๊ฒ ๋์์ ๋ถ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ด๋ค. ๊ฐ์ฅ ์์ ์ฃผ์ด์ง ๊ทธ๋ฆผ ์์ ๊ฒฝ์ฐ์ ์ง๋๊ฐ ์ ์๋ ๊ธธ์ ํ๋์์ผ๋ก, ์ง๋๊ฐ ์ ์๋ ๊ธธ์ ๋นจ๊ฐ์์ผ๋ก ํ์๋์ด ์์ผ๋ฉฐ, ์๋์ ๊ฐ๋ค. ๊ฒฝ์ฌ๋ก์ ๊ธธ์ด L = 2์ด๋ค.
์ง๋๊ฐ ์ฃผ์ด์ก์ ๋, ์ง๋๊ฐ ์ ์๋ ๊ธธ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N (2ย โค N โค 100)๊ณผ L (1 โค L โค N)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์ง๋๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์นธ์ ๋์ด๋ 10๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธย ์ค์ ์ง๋๊ฐ ์ ์๋ ๊ธธ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์
์์ 1
์ ๋ ฅ
6 2
3 3 3 3 3 3
2 3 3 3 3 3
2 2 2 3 2 3
1 1 1 2 2 2
1 1 1 3 3 1
1 1 2 3 3 2
์ถ๋ ฅ
3
์์ 2
์ ๋ ฅ
6 2
3 2 1 1 2 3
3 2 2 1 2 3
3 2 2 2 3 3
3 3 3 3 3 3
3 3 3 3 2 2
3 3 3 3 2 2
์ถ๋ ฅ
7
์์ 3
์ ๋ ฅ
6 3
3 2 1 1 2 3
3 2 2 1 2 3
3 2 2 2 3 3
3 3 3 3 3 3
3 3 3 3 2 2
3 3 3 3 2 2
์ถ๋ ฅ
3
์์ 4
์ ๋ ฅ
6 1
3 2 1 1 2 3
3 2 2 1 2 3
3 2 2 2 3 3
3 3 3 3 3 3
3 3 3 3 2 2
3 3 3 3 2 2
์ถ๋ ฅ
11
My Sol
def main(arr):
global N, L
check = [0]*N
std = arr[0]
def check_float(part):
global N, L
std = part[0]
for p in part:
if p != std: return 0
return 1
i = 1
while i < N:
# ๋์ด์ฐจ๊ฐ 1 ์ด๊ณผ
if abs(arr[i]-std) > 1: return 0
# ๋์ด๊ฐ ๊ฐ์
elif arr[i]==std: i+=1
# ๋์ด๊ฐ 1 ์์์ง
elif arr[i]+1 == std:
if i+L > N: return 0
if not check_float(arr[i:i+L]): return 0
for k in range(i, i+L):
check[k] = 1
i += L
std -= 1
# ๋์ด๊ฐ 1 ๋์์ง
elif arr[i]-1 == std:
if i-L < 0: return 0
# 1. ๋ค์ ๊ฒฝ์ฌ๋ก ๊ตฌ๊ฐ์ด ๋ชจ๋ ํํํ์ง ์ฒดํฌ
if not check_float(arr[i-L:i]): return 0
# 2. ๋ค์ ๊ฒฝ์ฌ๋ก๊ฐ ์์๋์ง ์ฒดํฌ
for k in range(i-L, i):
if check[k]: return 0
for k in range(i-L, i):
check[k] = 1
i += 1
std += 1
return 1
N, L = map(int, input().split())
mat = [list(map(int, input().split())) for _ in range(N)]
ans = 0
for i in range(N):
road = mat[i]
ans += main(road)
for j in range(N):
road = []
for i in range(N):
road.append(mat[i][j])
ans += main(road)
print(ans)
๊ตฌํ ๋ฌธ์ ์๋ค.
- NxN์ 2์ฐจ์ ๋ฐฐ์ด์์ ํ ํ๊ณผ ์ด์ ๊ธฐ์ค์ผ๋ก ์กฐํํ๊ธฐ ๋๋ฌธ์ 1์ฐจ์ ๋ฐฐ์ด์ ๋
๋ฆฝ์ ์ด๋ค. ๋๋ฌธ์ ๊ฐ ํ๊ณผ ์ด์ arr๋ก ํจ์์ ์ธ์๋ก ์ ๋ฌํ์ฌ ํ๋ณํ๋
main
ํจ์๋ฅผ ๋์๋ค. - mainํจ์๋ ๊ฐ๋ฅํ๋ค๋ฉด 1, ์ ๋๋ค๋ฉด 0์ ๋ฐํํ๊ณ , ์ ์ญ ๋ฐ๋ณต์์๋ ans์ ์ด๋ฅผ ๋ฐํ๊ฐ์ ๋ํด ์ถ๋ ฅํ๋ค.
- main ํจ์์ ๋ด๋ถ๋ ๊ฒฝ์ฌ๋ก์ ์กด์ฌ ์ ๋ฌด๋ฅผ ํ์ธํ๋
check
1์ฐจ์ ๋ฐฐ์ด์ ๋ฐ๋ก ๋๋ค. - ์์์ ์ธ
arr[0]
์ std๋ก ๋๊ณ , ์ดํ arr์ ํ ์นธ์ฉ ์ธ๋ฑ์ค๋ฅผ ๋์ด๋ฉฐ ์งํํ๋ค. - ๊ฒฝ์ฐ 1. ๊ฒฝ์ฌ๋ก๊ฐ ๋์์ง๊ฑฐ๋ ๋ฎ์์ง๋๋ฐ ๋ณํ๊ฐ 1 ์ด๊ณผ์ธ ๊ฒฝ์ฐ๋ฅผ ๋จผ์ ๋ฐ์ง๋ค. ์ด ๊ฒฝ์ฐ ๋ฐ์ง ๊ฒ๋ ์์ด ๋ถ๊ฐ๋ฅํ๋ฏ๋ก 0์ return ํ๋ค.
- ๊ฒฝ์ฐ 2. ๋ง์ฝ ๋์ด๊ฐ ๊ฐ๋ค๋ฉด ๋ฐ์ง ๊ฒ๋ ์์ด ๋ค์ ์ธ๋ฑ์ค๋ก ๋์ด๊ฐ๋ค.
- ๊ฒฝ์ฐ 3. ๋์ด๊ฐ ๋ฎ์์ง๋ค๋ฉด ์์ผ๋ก ๊ฒฝ์ฌ๋ก๋ฅผ ๋์ด์ผ ํ๋ฏ๋ก ์์ ๊ฒฝ์ฌ๋ก๋ฅผ ๋๋ ๊ตฌ๊ฐ์ด ํํํ์ง ์ฒดํฌํ๋ค. ์ด๋ฅผ
check_float
ํจ์๋ฅผ ๋ฐ๋ก ๋์ด ๊ตฌ๊ฐ์ ์ธ์๋ก ์ ๋ฌํ๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ์ฒดํฌํ๋ค. ์ด์ ์๊ฐํด๋ณด๋ set์ผ๋ก ๋๊ณ ๊ธธ์ด๊ฐ 1 ์ด์์ธ์ง ์๋์ง๋ง ์ฒดํฌํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค. - ํํํ์ง ์๋ค๋ฉด ๋ถ๊ฐ๋ฅ์ด๋ฏ๋ก 0์ ๋ฐํํ๊ณ , ํํํ๋ค๋ฉด(part๊ฐ ๋ชจ๋ ๊ฐ์ ๊ฐ) ํด๋น ๊ฒฝ์ฌ๋ก ๊ตฌ๊ฐ์ ์ธ๋ฑ์ค๋งํผ check์ 1์ ์ฒดํฌํ๋ค. ํฅํ ๋์ด๊ฐ ํ ์นธ ๋์์ ธ์ ๊ฒฝ์ฌ๋ก๋ฅผ ์ด์ ์ผ๋ก ๋์ด์ผ ํ ๋, check ๋ฐฐ์ด์ ํ์ธํ์ฌ ๊ฒฝ์ฌ๋ก๊ฐ ์ด๋ฏธ ๋์ด์ ธ์๋ ๊ณต๊ฐ์ด ์๋์ง ์ฒดํฌํ๋ค.
- ๊ฒฝ์ฌ๋ก๋ฅผ L๋งํผ ๋์์ผ๋ฏ๋ก ์ธ๋ฑ์ค๋ฅผ L๋งํผ ์ถ๊ฐํ๊ณ std๋ฅผ 1 ๋ฎ์ถฐ์ค๋ค.
- ๊ฒฝ์ฐ 4. ๋์ด๊ฐ ํ ์นธ ๋์์ง๋ค๋ฉด ์ด๋ฏธ ์จ ๋ฐฉํฅ์ผ๋ก ๊ฒฝ์ฌ๋ก๋ฅผ ๋์ด์ผ ํ๋ฏ๋ก 1) ๋ค์ ๊ฒฝ์ฌ๋ก๋ฅผ ๋๋ ๊ตฌ๊ฐ์ด ํํํ์ง ์ฒดํฌํ๊ณ , 2) ๊ฒฝ์ฌ๋ก๊ฐ ์ด๋ฏธ ์์ง๋ ์๋์ง ์ฒดํฌํ๋ 2์ค ์ฒดํฌ๊ฐ ํ์ํ๋ค.
- ์ด ์ค ํ๋๋ผ๋ ๋ง์กฑํ์ง ๋ชปํ๋ค๋ฉด 0์ ๋ฐํ, ์๋๋ผ๋ฉด ๊ตฌ๊ฐ๋งํผ check์ ์ฒดํฌ๋ฅผ ํด์ฃผ๊ณ , std๋ฅผ 1 ๋์ฌ์ค ๋ค, ๋ค์ ์ธ๋ฑ์ค๋ก ๋์ด๊ฐ๋ค.
๊ฒฐ๊ณผ
๋ง์์ต๋๋ค!!
๋ชจ๋ฒ๋ต์
# empty
๋๊ธ๋จ๊ธฐ๊ธฐ