ํ์ด
๊ฒฝ์ฌ๋ก๋ฅผ ๋ฐฐ์นํ์ฌ ํ์ด๋ ์ด์ ์ฒ์๋ถํฐ ๋๊น์ง ํต๊ณผ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
ํ๊ณผ ์ด์ ๋ชจ๋ ํ์ธํด์ผํ๊ธฐ ๋๋ฌธ์ zip() ์ ํตํด column ๋ค์ row ๋ก ๋ณํ์์ผ graph ์ extend ํด์ฃผ์๋ค.
๊ฐ row ๋ค์ ํ์ธํ๋ฉด์ ์๋ ๋ช ์๋ ์กฐ๊ฑด๋ค ์ค ํ๋๋ ๋ถํฉํ์ง ์์ ๊ฒฝ์ฐ ํต๊ณผ ๋ถ๊ฐ๋ฅํ ๊ธธ๋ก ํ๋จํ์ฌ False ๋ฅผ ๋ฐฐ์ ํ๋ค.
์ฐ์ ๊ฒฝ์ฌ๋ก๋ฅผ ๋ฐฐ์น๊ฐ๋ฅํ์ง ํ๋จํ๊ธฐ ์ํ์ฌ,
-
๊ฒฝ์ฌ๋ก๋ฅผ ์ด๋ฏธ ๋ฐฐ์นํ์๋์ง
-
๊ฒฝ์ฌ๋ก๋ฅผ ๋ฐฐ์นํ ๊ณต๊ฐ์ด ์ถฉ๋ถํ์ง
-
๊ฒฝ์ฌ๋ก๊ฐ ๋๋๋ ์ง์ ์ ๋์ด๊ฐ ๋ง๋์ง
์ด ์ธ๊ฐ์ง์ ์กฐ๊ฑด์ ๊ฑธ์ด ๊ฒฝ์ฌ๋ก๋ฅผ ํตํด ์ฌ๋ผ๊ฐ ๊ฒฝ์ฐ์ ๋ด๋ ค๊ฐ ๊ฒฝ์ฐ๋ฅผ ๋๋ ์ ์ ์ธํ๋ค.
๋ ์กฐ๊ฑด ๋ชจ๋ ๋ถํฉํ์ง ์์ ๊ฒฝ์ฐ ๋ฐ๋ก ์ง๋๊ฐ ์ ์๋์ง๋ฅผ ํ๋จํ ๋ค, ๊ทธ ๋ํ ๋ถํฉํ์ง ์์ ๊ฒฝ์ฐ ํต๊ณผ ๋ถ๊ฐ๋ฅํ ๊ธธ๋ก ํ๋จํ์ฌ False ๋ฅผ ๋ฐฐ์ ํ๋ค.
์ดํ isTrue ๋ฅผ ์ฌ์ฉํด ๋ชจ๋ ์กฐ๊ฑด์ ๋ฐฐํฉํ์ฌ ๋ฐ๋ณต๋ฌธ์ ํ์ถํ ๊ฒฝ๋ก์ผ ๊ฒฝ์ฐ ans += 1 ์ ํด์ฃผ๊ณ ๋ชจ๋ row ์ ๋ํ ๋ฐ๋ณต์ด ๋๋๋ฉด ans ๋ฅผ ์ถ๋ ฅํด์ค๋ค.
์์ค์ฝ๋
# ๊ฒฝ์ฌ๋ก
import sys
input = sys.stdin.readline
n, l = map(int, input().split())
graph = [list(map(int, input().split())) for _ in range(n)]
graph.extend(list(zip(*graph)))
ans = 0
for line in graph:
isTrue = True
canImp = [True for _ in range(n)] # ๊ฒฝ์ฌ๋ก ๋ฐฐ์น ๊ฐ๋ฅ?
i = 0
while True:
# print(i, end="")
if i >= n-1: # ๋ฒ์๋ด์์
break
elif canImp[i] and i < n-l and len(set(line[i:i+l])) == 1 and line[i]+1 == line[i+l]: # ๊ฒฝ์ฌ๋ก๋ฅผ ํตํด ์ฌ๋ผ๊ฐ ๊ฒฝ์ฐ
for k in range(i, i+l):
canImp[k] = False
i += l
elif canImp[i+1] and i < n-l and len(set(line[i+1:i+l+1])) == 1 and line[i]-1 == line[i+l]: # ๊ฒฝ์ฌ๋ก๋ฅผ ํตํด ๋ด๋ ค๊ฐ ๊ฒฝ์ฐ
for k in range(i+1, i+l+1):
canImp[k] = False
i += l
elif i < n-1 and line[i] == line[i+1]: # ๊ฐ์ ๋์ด์ผ ๊ฒฝ์ฐ
i += 1
else:
isTrue = False
break
if isTrue:
ans += 1
# print(isTrue)
print(ans)