[๋ฐฑ์ค€] 14890.๊ฒฝ์‚ฌ๋กœ/Python - Gold3

2026. 3. 19. 16:07ยทCoding Test/Algorithms

โ“๋ฌธ์ œ

https://www.acmicpc.net/problem/14890

์„ฑ๋Šฅ ์š”์•ฝ

๋ฉ”๋ชจ๋ฆฌ: 109544 KB, ์‹œ๊ฐ„: 92 ms

๋ถ„๋ฅ˜

๊ตฌํ˜„

๋ฌธ์ œ ์„ค๋ช…

ํฌ๊ธฐ๊ฐ€ 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๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

โœ๐Ÿปํ’€์ด

ํ•˜๋‚˜์˜ ํ–‰์ด๋‚˜ ํ•˜๋‚˜์˜ ์—ด์ด ๊ฐ๊ฐ ๊ธธ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ ์ฃผ์–ด์ง„ ํ–‰๋ ฌ์„ ์ „์น˜ํ•˜์—ฌ ๊ฐ๊ฐ์˜ ๊ธธ์„ ํƒ์ƒ‰ํ•˜๊ธฐ ํŽธํ•˜๊ฒŒ ํ•œ๋‹ค.

๋ฌธ์ œ์—์„œ ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“์„ ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์„ ๋ณด๋ฉด L๊ฐœ์˜ ์—ฐ์†๋œ ์นธ์— ๊ฒฝ์‚ฌ๋กœ์˜ ๋ฐ”๋‹ฅ์ด ๋ชจ๋‘ ์ ‘ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚ฎ์€ ์นธ๊ณผ ๋†’์€ ์นธ์˜ ๋†’์ด ์ฐจ๋Š” 1์ด๊ณ  ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“์„ ๋‚ฎ์€ ์นธ์˜ ๋†’์ด๋Š” ๋ชจ๋‘ ๊ฐ™์•„์•ผ ํ•˜๋ฉฐ, L๊ฐœ์˜ ์นธ์ด ์—ฐ์†๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋ฏ€๋กœ ๊ธธ์„ ํƒ์ƒ‰ํ•  ๋•Œ ์šฐ์„  ๊ฒฝ์‚ฌ๋กœ์˜ ๋†’์ด ์ฐจ๊ฐ€ 1์ธ์ง€ ์•„๋‹Œ์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค. ๋†’์ด ์ฐจ๊ฐ€ 1์ด ์•„๋‹ˆ๋ผ๋ฉด ๊ทธ ๊ธธ์€ ๋” ์ด์ƒ ํƒ์ƒ‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋งŒ์•ฝ ๋†’์ด ์ฐจ๊ฐ€ 1์ด๋ผ๋ฉด ๋‚ฎ์€ ์นธ์ด ์—ฐ์†์ ์œผ๋กœ L๊ฐœ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค. ๋†’์ด๊ฐ€ ๊ฐ™์€ ์นธ์ด L๊ฐœ๋กœ ์—ฐ์†์ ์ด์ง€ ์•Š์œผ๋ฉด ๊ทธ ๊ธธ์€ ๋” ์ด์ƒ ํƒ์ƒ‰ํ•˜์ง€ ์•Š๋Š”๋‹ค. break์— ๊ฑธ๋ฆฌ์ง€ ์•Š๊ณ  for๋ฌธ์„ ๋‚˜์˜ค๋ฉด ๊ทธ ๊ธธ์€ ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด๋ฏ€๋กœ answer + 1์„ ํ•œ๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ ๋ชจ๋“  ๊ธธ์„ ํƒ์ƒ‰ํ•˜๋ฉด ์ง€๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์˜ ๊ฐœ์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ป์ฝ”๋“œ

import sys

input = sys.stdin.readline

n, l = map(int, input().split())
roads = [list(map(int, input().split())) for _ in range(n)]
roads_tr = list(map(list, zip(*roads))) # ํ–‰๋ ฌ ์ „์น˜
answer = 0

def search(road):
    global answer
    visited = [False] * n #๊ฒฝ์‚ฌ๋กœ๋ฅผ ์ด๋ฏธ ๋†“์•˜๋Š”์ง€ ์—ฌ๋ถ€ ์ฒดํฌ
    for i in range(1, n):
        if abs(road[i] - road[i-1]) > 1:
            break
        elif abs(road[i] - road[i-1]) == 1:
            k = 0
            # ๋จผ์ € ๋‚ฎ์€ ์นธ์„ ์ฐพ๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ฒฝ์‚ฌ๋กœ๋ฅผ ๋†“๋‹ค๊ฐ€ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚˜๋ฉด ์•ˆ ๋˜๋ฏ€๋กœ ๋ฒ”์œ„๋ฅผ ๋จผ์ € ์ง€์ •ํ•œ๋‹ค.
            # ๊ฒฝ์‚ฌ๋กœ๊ฐ€ ๊ฒน์น˜๋ฉด ์•ˆ ๋˜๋ฏ€๋กœ ๊ฒฝ์‚ฌ๋กœ ์œ ๋ฌด๋ฅผ ํ™•์ธํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์—ฐ์†์ ์œผ๋กœ ์žˆ๋Š” ๊ฒƒ์ด L๊ฐœ์™€ ๊ฐ™์„ ๋•Œ๊นŒ์ง€ ํƒ์ƒ‰ํ•œ๋‹ค.
            if road[i] > road[i-1]:
                while i-1-k > -1 and not visited[i-1-k] and road[i-1-k] == road[i]-1 and k != l:
                    visited[i-1-k] = True
                    k+=1
            elif road[i] < road[i-1]:
                while i+k < n and not visited[i+k] and road[i+k] == road[i-1]-1 and k != l:
                    visited[i+k] = True
                    k+=1
            # ์นธ ์ˆ˜๊ฐ€ ๊ฒฝ์‚ฌ๋กœ ๊ธธ์ด๋ณด๋‹ค ์งง์œผ๋ฉด ๋” ์ด์ƒ ํƒ์ƒ‰ํ•˜์ง€ ์•Š๋Š”๋‹ค.
            if k < l:
                break
    else:
        answer += 1

for i in range(n):
    dfs(roads[i])
    dfs(roads_tr[i])

print(answer)

๐Ÿ“ํ›„๊ธฐ

๋‹จ์ˆœ ๊ตฌํ˜„ ๋ฌธ์ œ๋ผ์„œ ์ฝ”๋“œ๋ฅผ ์งœ๊ธฐ๋Š” ํ–ˆ์ง€๋งŒ ๋ญ”๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋” ๊ฐœ์„ ํ•ด๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Coding Test > Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 23288. ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ2/Python - Gold3  (0) 2026.03.24
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [3์ฐจ] n์ง„์ˆ˜ ๊ฒŒ์ž„/Python - Lv.2  (0) 2025.10.09
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํŠœํ”Œ/Python - Lv.2  (0) 2025.10.07
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [1์ฐจ] ๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง/Python - Lv.2  (0) 2025.10.02
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [1์ฐจ] ๋น„๋ฐ€์ง€๋„/Python - Lv.1  (0) 2025.10.01
'Coding Test/Algorithms' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 23288. ์ฃผ์‚ฌ์œ„ ๊ตด๋ฆฌ๊ธฐ2/Python - Gold3
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [3์ฐจ] n์ง„์ˆ˜ ๊ฒŒ์ž„/Python - Lv.2
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ํŠœํ”Œ/Python - Lv.2
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] [1์ฐจ] ๋‰ด์Šค ํด๋Ÿฌ์Šคํ„ฐ๋ง/Python - Lv.2
The Engineer, Lucy
The Engineer, Lucy
  • The Engineer, Lucy
    Growing up for My Future๐Ÿ’•
    The Engineer, Lucy
    • Instagram
    • GitHub
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (201)
      • OS&Server (30)
        • Linux (28)
        • WEB | WAS (2)
      • Architecture (10)
      • Cloud (8)
        • AWS (4)
        • GCP (4)
      • Container (12)
        • Docker (4)
        • Kubernetes (8)
      • IaC | DevOps (11)
        • IaC (7)
        • DevOps (4)
      • Observability (6)
      • CS (17)
        • Data Structure (0)
        • Algorithms (1)
        • Operating System (3)
        • Network (11)
        • Database System (2)
      • Coding Test (99)
        • Algorithms (91)
        • SQL (7)
      • ETC (8)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๊ณต์ง€์‚ฌํ•ญ

  • ๋งํฌ

    • Lucy's Instagram
    • Lucy's GitHub
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    network
    Kubernetes
    ์˜ค๋ธ”์™„
    ์ž๋ฐ”
    ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ
    Linux
    ํ‹ฐ์Šคํ† ๋ฆฌ์ฑŒ๋ฆฐ์ง€
    Java
    ๋„์ปค
    ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
    cs ๊ธฐ์ดˆ ์ง€์‹ ์ •๋ฆฌ
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ณต๋ถ€
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    programmers
    ๋„ˆ๋น„์šฐ์„ ํƒ์ƒ‰
    ๋ฆฌ๋ˆ…์Šค๋งˆ์Šคํ„ฐ 2๊ธ‰
    ๋ฆฌ๋ˆ…์Šค
    Shell
    ๋„คํŠธ์›Œํฌ
    terraform
    AWS
    docker
    ๋ฐฑ์ค€
    Shell Script
    ์‰˜ ์Šคํฌ๋ฆฝํŠธ
    ๋„คํŠธ์›Œํฌ ๊ธฐ์ดˆ ์ง€์‹
    bfs
    K8s
    Baekjoon
    ์…ธ ์Šคํฌ๋ฆฝํŠธ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
The Engineer, Lucy
[๋ฐฑ์ค€] 14890.๊ฒฝ์‚ฌ๋กœ/Python - Gold3
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”