[BOJ] 14890. ๊ฒฝ์‚ฌ๋กœ(๐Ÿฅ‡, ๊ตฌํ˜„/์‹œ๋ฎฌ๋ ˆ์ด์…˜)

lemythe423ยท2023๋…„ 6์›” 27์ผ
0

BOJ ๋ฌธ์ œํ’€์ด

๋ชฉ๋ก ๋ณด๊ธฐ
14/133
post-thumbnail

๋ฌธ์ œ

ํ’€์ด

  • ๋ชจ๋“  ํ–‰๊ณผ ์—ด์— ๋Œ€ํ•ด ํƒ์ƒ‰์ด ์ง„ํ–‰๋œ๋‹ค
  • ๋†’์ด๊ฐ€ 2์ด์ƒ์œผ๋กœ ๋ณ€ํ™”ํ•˜๊ฒŒ ๋˜๋ฉด ํƒ์ƒ‰์„ ์ค‘๋‹จํ•œ๋‹ค
  • ๊ฒฝ์‚ฌ๋กœ๋Š” ๋‚ฎ์€ ์นธ์— ๋†“์•„์•ผ ํ•˜๋ฏ€๋กœ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•˜๋‹ค 1์นธ ๋†’์€ ์นธ์„ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ๋’ค๋กœ ํ›„์ง„ํ•ด์„œ ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ(back ํ•จ์ˆ˜), 1์นธ ๋‚ฎ์€ ์นธ์„ ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด ์•ž์œผ๋กœ ๋‚˜์•„๊ฐ€๋ฉด์„œ ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“์„ ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธ(fore ํ•จ์ˆ˜)
  • ๊ฒฝ์‚ฌ๋กœ๋Š” ๊ฒน์น˜๊ฒŒ ๋‘˜ ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ramp ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ์นธ์— ๊ฒฝ์‚ฌ๋กœ๊ฐ€ ๋†“์—ฌ์žˆ๋Š”์ง€ ํ™•์ธ
import sys
input =sys.stdin.readline

def fore(row, s, n, ramp): # ํ–‰, ์‹œ์ž‘์  ๊ฐ’
    for t in range(L):
        next = s+t
        if next>=N: 
            return False
        
        if row[next] != n or ramp[next]:
            return False
        ramp[next] = True
    
    return True


def back(row, s, n, ramp):
    for t in range(1, L+1):
        prev = s-t
        if prev<0:
            return False
        
        if row[prev] != n or ramp[prev]:
            return False
        ramp[prev] = True
    
    return True

def main(arr):
    global ans
    for row in arr:
        t, next = row[0], 1
        ramp = [False]*N
        while next < N:
            if t == row[next]:
                next += 1
                continue

            gap = t-row[next]
            if gap > 1 or gap < -1:
                break

            if gap == -1:
                if not back(row, next, t, ramp):
                    break
            
            elif gap == 1:
                if not fore(row, next, t-1, ramp):
                    break
                next += (L-1)
                
            t = row[next]
        else:
            # print(row)
            ans += 1

N, L = map(int, input().split())
MAP = [list(map(int, input().split())) for _ in range(N)]
ROTATE_MAP = list(map(list, zip(*MAP))) 
ans = 0

main(MAP)
main(ROTATE_MAP)
print(ans)
profile
์•„๋ฌด๋ง์ด๋‚˜ํ•˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€