ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ

 

14890๋ฒˆ: ๊ฒฝ์‚ฌ๋กœ

์ฒซ์งธ ์ค„์— N (2 ≤ N ≤ 100)๊ณผ L (1 ≤ L ≤ N)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์— ์ง€๋„๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ ์นธ์˜ ๋†’์ด๋Š” 10๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

www.acmicpc.net

 

๋ฌธ์ œ ํ’€์ด

 NxN ์ง€๋„๊ฐ€ ์ฃผ์–ด์ง€๊ณ  ๊ฐ๊ฐ์˜ ์นธ์— ๋†’์ด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ์ด ์ง€๋„์—์„œ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด ๋ช‡ ๊ฐœ ์ธ์ง€ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๊ธธ์€ ์ง€๋„์˜ ํ•˜๋‚˜์˜ ํ–‰ ๋˜๋Š” ์—ด์„ ์˜๋ฏธํ•œ๋‹ค. ๊ธธ์„ ์ง€๋‚˜๊ฐˆ ๋•Œ ๋†’์ด๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๊ฒฝ์‚ฌ๋กœ๋ฅผ ์„ค์น˜ํ•˜์—ฌ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋‹จ ๊ฒฝ์‚ฌ๋กœ์˜ ๊ธธ์ด๋งŒํผ ๊ธธ์ด๊ฐ€ ํ™•๋ณด๋˜์ง€ ์•Š๊ฑฐ๋‚˜, ๊ฒฝ์‚ฌ๋กœ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์—†๋Š” ์˜์—ญ ๋˜๋Š” ๋†’์ด์˜ ์ฐจ๊ฐ€ 2 ์ด์ƒ์ด๋ผ๋ฉด ์„ค์น˜ํ•  ์ˆ˜ ์—†๋‹ค.

 

์ถœ์ฒ˜ : https://www.acmicpc.net/problem/14890

 ์˜ˆ์ œ ์ž…๋ ฅ 1์˜ ๊ฒฝ์šฐ ์œ„์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด 3๊ฐœ์˜ ๊ธธ์„ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ๋‚˜๋จธ์ง€ ๊ฒฝ์šฐ๋“ค์€ ๊ฒฝ์‚ฌ๋กœ๋ฅผ ์„ค์น˜ํ•  ์ˆ˜ ์—†์–ด ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์—†๋‹ค. ๊ฒฝ์‚ฌ๋กœ ์„ค์น˜๊ฐ€ ๊ฐ€๋Šฅํ•œ์ง€๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ํŒ๋‹จํ•˜๋ฉด ๋œ๋‹ค.

 

  • ํ•˜๋‚˜์˜ ํ–‰, ์—ด์˜ ๋†’์ด๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€ ๊ฒฝ์šฐ
  • ํ•˜๋‚˜์˜ ํ–‰, ์—ด์—์„œ ์ด์ „์˜ ๋†’์ด์™€ ํ˜„์žฌ์˜ ๋†’์ด๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ
    • ๊ฒฝ์‚ฌ๋กœ๊ฐ€ ์„ค์น˜ ๊ฐ€๋Šฅํ•œ ๊ธธ์ด๋ฅผ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ์นด์šดํŠธ
  • ๊ฒฝ์‚ฌ ์ƒ์Šน: ํ•˜๋‚˜์˜ ํ–‰, ์—ด์—์„œ ํ˜„์žฌ ๋†’์ด - ์ด์ „์˜ ๋†’์ด๋Š” 1์ธ ๊ฒฝ์šฐ
    • ๊ฒฝ์‚ฌ๋กœ๊ฐ€ ์„ค์น˜๊ฐ€๋Šฅํ•œ ๊ธธ์ด(์นด์šดํŠธ)๊ฐ€ ํ™•๋ณด๋˜์—ˆ๋‹ค๋ฉด ๊ณ„์† ์ง„ํ–‰
    • ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ค‘๋‹จ
  • ๊ฒฝ์‚ฌ ํ•˜๋ฝ: ํ•˜๋‚˜์˜ ํ–‰, ์—ด์—์„œ ํ˜„์žฌ ๋†’์ด - ์ด์ „์˜ ๋†’์ด๊ฐ€ -1์ธ ๊ฒฝ์šฐ
    • ๋‚ด๋ ค๊ฐ€๋Š” ๊ฒฝ์‚ฌ๋กœ์˜ ๊ฒฝ์šฐ, ๋ฐ”๋กœ ์ด์ „์— ๊ฒฝ์‚ฌ ํ•˜๋ฝ์„ ํ•œ ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์นด์šดํŠธ๋ฅผ -L + 1๋กœ ๋ณ€๊ฒฝ.
    • -L + 1 ๋ถ€ํ„ฐ ๋‹ค์‹œ ์นด์šดํŠธํ•˜์—ฌ ํ˜„์žฌ ๋†’์ด๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ฒฝ์‚ฌ๋กœ๊ฐ€ ์„ค์น˜๋ผ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•จ
    • ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ์ค‘๋‹จ
  • ์œ„์˜ ๋ชจ๋“  ๊ฒฝ์šฐ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ, ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ค‘๋‹จ
  • ์ฆ‰, ํ•˜๋‚˜์˜ ํ–‰, ์—ด์„ ์ค‘๋‹จํ•˜์ง€ ์•Š๊ณ  ๋ชจ๋‘ ํƒ์ƒ‰ํ•˜๊ณ  ์นด์šดํŠธ๊ฐ€ ์Œ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์„ ์˜๋ฏธํ•จ

 

์ฝ”๋“œ

from sys import stdin
from collections import Counter


def passable(graph):
    answer = 0

    for i in range(n):
        if len(Counter(graph[i])) == 1:
            answer += 1
            continue

        cur_height = graph[i][0]
        cnt = 1
        for j in range(1, n):
            # ์ด์ „ ๋†’์ด์™€ ํ˜„์žฌ ๋†’์ด๊ฐ€ ๊ฐ™์œผ๋ฉด
            if graph[i][j] == cur_height:
                cnt += 1
            # ์ด์ „ ๋†’์ด์™€ ํ˜„์žฌ ๋†’์ด๊ฐ€ ์ฐจ๊ฐ€ +1
            elif graph[i][j] - cur_height == 1:
                if cnt >= l:
                    cnt = 1
                else:
                    break
            # ์ด์ „ ๋†’์ด์™€ ํ˜„์žฌ ๋†’์ด์˜ ์ฐจ๊ฐ€ -1
            elif graph[i][j] - cur_height == -1:
                if cnt >= 0:
                    cnt = -l + 1
                else:
                    break
            else:
                break

            # ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํ†ต๊ณผํ•œ ๊ฒฝ์šฐ, ํ˜„์žฌ ๋†’์ด๋ฅผ ๋ณ€๊ฒฝ
            cur_height = graph[i][j]
        else:
            answer += 1 if cnt >= 0 else 0

    return answer


if __name__ == '__main__':
    n, l = map(int, stdin.readline().split())
    horizontal = [list(map(int, stdin.readline().split())) for _ in range(n)]
    vertical = list(zip(*horizontal))
    print(passable(horizontal) + passable(vertical))

 ๊ฐ€๋กœ, ์„ธ๋กœ์— ๋”ฐ๋ผ ๋ณ„๋„๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ๊ท€์ฐฎ์•„์„œ, ์ฒ˜์Œ์— ์ž…๋ ฅ๋˜๋Š” ๊ฐ’์„ `zip`์„ ํ™œ์šฉํ•˜์—ฌ ํ–‰์—ด์„ ์ „์น˜์‹œ์ผฐ๋‹ค.๐Ÿ˜‰

728x90
๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๊ธ€ ๋ณด๊ด€ํ•จ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€