ํ’€์ด


๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋ฐฐ์น˜ํ•˜์—ฌ ํ–‰์ด๋‚˜ ์—ด์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋๊นŒ์ง€ ํ†ต๊ณผ๊ฐ€๋Šฅ ์—ฌ๋ถ€๋ฅผ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค.

ํ–‰๊ณผ ์—ด์„ ๋ชจ๋‘ ํ™•์ธํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— zip() ์„ ํ†ตํ•ด column ๋“ค์„ row ๋กœ ๋ณ€ํ™˜์‹œ์ผœ graph ์— extend ํ•ด์ฃผ์—ˆ๋‹ค.

๊ฐ row ๋“ค์„ ํ™•์ธํ•˜๋ฉด์„œ ์•„๋ž˜ ๋ช…์‹œ๋œ ์กฐ๊ฑด๋“ค ์ค‘ ํ•˜๋‚˜๋„ ๋ถ€ํ•ฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํ†ต๊ณผ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ธธ๋กœ ํŒ๋‹จํ•˜์—ฌ False ๋ฅผ ๋ฐฐ์ •ํ•œ๋‹ค.

์šฐ์„  ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋ฐฐ์น˜๊ฐ€๋Šฅํ•œ์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•˜์—ฌ,

  1. ๊ฒฝ์‚ฌ๋กœ๋ฅผ ์ด๋ฏธ ๋ฐฐ์น˜ํ–ˆ์—ˆ๋Š”์ง€

  2. ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋ฐฐ์น˜ํ•  ๊ณต๊ฐ„์ด ์ถฉ๋ถ„ํ•œ์ง€

  3. ๊ฒฝ์‚ฌ๋กœ๊ฐ€ ๋๋‚˜๋Š” ์ง€์ ์˜ ๋†’์ด๊ฐ€ ๋งž๋Š”์ง€

์ด ์„ธ๊ฐ€์ง€์˜ ์กฐ๊ฑด์„ ๊ฑธ์–ด ๊ฒฝ์‚ฌ๋กœ๋ฅผ ํ†ตํ•ด ์˜ฌ๋ผ๊ฐˆ ๊ฒฝ์šฐ์™€ ๋‚ด๋ ค๊ฐˆ ๊ฒฝ์šฐ๋ฅผ ๋‚˜๋ˆ ์„œ ์„ ์–ธํ–ˆ๋‹ค.

๋‘ ์กฐ๊ฑด ๋ชจ๋‘ ๋ถ€ํ•ฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ฐ”๋กœ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ํŒ๋‹จํ•œ ๋’ค, ๊ทธ ๋˜ํ•œ ๋ถ€ํ•ฉํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ํ†ต๊ณผ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ธธ๋กœ ํŒ๋‹จํ•˜์—ฌ 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)

References