์˜ํ™”๊ฐ๋… ์ˆŒ

๐Ÿ“„ ๋ฌธ์ œ

๋ฌธ์ œ

666์€ ์ข…๋ง์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆซ์ž๋ผ๊ณ  ํ•œ๋‹ค.
๋”ฐ๋ผ์„œ, ๋งŽ์€ ๋ธ”๋ก๋ฒ„์Šคํ„ฐ ์˜ํ™”์—์„œ๋Š” 666์ด ๋“ค์–ด๊ฐ„ ์ œ๋ชฉ์„ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.
์˜ํ™”๊ฐ๋… ์ˆŒ์€ ์„ธ์ƒ์˜ ์ข…๋ง ์ด๋ผ๋Š” ์‹œ๋ฆฌ์ฆˆ ์˜ํ™”์˜ ๊ฐ๋…์ด๋‹ค.
์กฐ์ง€ ๋ฃจ์นด์Šค๋Š” ์Šคํƒ€์›Œ์ฆˆ๋ฅผ ๋งŒ๋“ค ๋•Œ, ์Šคํƒ€์›Œ์ฆˆ 1, ์Šคํƒ€์›Œ์ฆˆ 2, ์Šคํƒ€์›Œ์ฆˆ 3, ์Šคํƒ€์›Œ์ฆˆ 4, ์Šคํƒ€์›Œ์ฆˆ 5,
์Šคํƒ€์›Œ์ฆˆ 6๊ณผ ๊ฐ™์ด ์ด๋ฆ„์„ ์ง€์—ˆ๊ณ ,
ํ”ผํ„ฐ ์žญ์Šจ์€ ๋ฐ˜์ง€์˜ ์ œ์™•์„ ๋งŒ๋“ค ๋•Œ, ๋ฐ˜์ง€์˜ ์ œ์™• 1, ๋ฐ˜์ง€์˜ ์ œ์™• 2, ๋ฐ˜์ง€์˜ ์ œ์™• 3๊ณผ ๊ฐ™์ด ์˜ํ™” ์ œ๋ชฉ์„ ์ง€์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ ์ˆŒ์€ ์ž์‹ ์ด ์กฐ์ง€ ๋ฃจ์นด์Šค์™€ ํ”ผํ„ฐ ์žญ์Šจ์„ ๋›ฐ์–ด๋„˜๋Š”๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ
์˜ํ™” ์ œ๋ชฉ์„ ์ข€ ๋‹ค๋ฅด๊ฒŒ ๋งŒ๋“ค๊ธฐ๋กœ ํ–ˆ๋‹ค.

์ข…๋ง์˜ ์ˆซ์ž๋ž€ ์–ด๋–ค ์ˆ˜์— 6์ด ์ ์–ด๋„ 3๊ฐœ์ด์ƒ ์—ฐ์†์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ์ˆ˜๋ฅผ ๋งํ•œ๋‹ค.
์ œ์ผ ์ž‘์€ ์ข…๋ง์˜ ์ˆซ์ž๋Š” 666์ด๊ณ , ๊ทธ ๋‹ค์Œ์œผ๋กœ ํฐ ์ˆ˜๋Š” 1666, 2666, 3666, .... ๊ณผ ๊ฐ™๋‹ค.

๋”ฐ๋ผ์„œ, ์ˆŒ์€ ์ฒซ ๋ฒˆ์งธ ์˜ํ™”์˜ ์ œ๋ชฉ์€ ์„ธ์ƒ์˜ ์ข…๋ง 666, ๋‘ ๋ฒˆ์งธ ์˜ํ™”์˜ ์ œ๋ชฉ์€ ์„ธ์ƒ์˜ ์ข…๋ง 1666
์ด๋ ‡๊ฒŒ ์ด๋ฆ„์„ ์ง€์„ ๊ฒƒ์ด๋‹ค.
์ผ๋ฐ˜ํ™”ํ•ด์„œ ์ƒ๊ฐํ•˜๋ฉด, N๋ฒˆ์งธ ์˜ํ™”์˜ ์ œ๋ชฉ์€ ์„ธ์ƒ์˜ ์ข…๋ง (N๋ฒˆ์งธ๋กœ ์ž‘์€ ์ข…๋ง์˜ ์ˆซ์ž) ์™€ ๊ฐ™๋‹ค.

์ˆŒ์ด ๋งŒ๋“  N๋ฒˆ์งธ ์˜ํ™”์˜ ์ œ๋ชฉ์— ๋“ค์–ด๊ฐ„ ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
์ˆŒ์€ ์ด ์‹œ๋ฆฌ์ฆˆ๋ฅผ ํ•ญ์ƒ ์ฐจ๋ก€๋Œ€๋กœ ๋งŒ๋“ค๊ณ , ๋‹ค๋ฅธ ์˜ํ™”๋Š” ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ˆซ์ž N์ด ์ฃผ์–ด์ง„๋‹ค. N์€ 10,000๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— N๋ฒˆ์งธ ์˜ํ™”์˜ ์ œ๋ชฉ์— ๋“ค์–ด๊ฐ„ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿงž ํ’€์ด

๋”๋ณด๊ธฐ

ํ’€์ด (ํ’€์ง€ ๋ชปํ•จ) (๋ฌธ์ž์—ด + ์ˆซ์ž ๋“ฑ์œผ๋กœ ์‹œ๋„ํ•˜๋ ค๋‹ค๊ฐ€ ์‹คํŒจํ•จ)

'''
666
1666
2666
3666
4666
5666
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
7666
8666
9666
10666
11666
12666
13666
'''

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

# [ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 1436๋ฒˆ ๋ฌธ์ œ: ์˜ํ™”๊ฐ๋… ์ˆŒ

n = int(input())
satan = 666

while n:
    if '666' in str(satan):
        n -= 1
    satan += 1

print(satan - 1)

ํ† ๋งˆํ† 

๐Ÿ“„ ๋ฌธ์ œ

๋ฌธ์ œ

์ฒ ์ˆ˜์˜ ํ† ๋งˆํ†  ๋†์žฅ์—์„œ๋Š” ํ† ๋งˆํ† ๋ฅผ ๋ณด๊ด€ํ•˜๋Š” ํฐ ์ฐฝ๊ณ ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
ํ† ๋งˆํ† ๋Š” ์•„๋ž˜์˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ๊ฒฉ์ž ๋ชจ์–‘ ์ƒ์ž์˜ ์นธ์— ํ•˜๋‚˜์”ฉ ๋„ฃ์–ด์„œ ์ฐฝ๊ณ ์— ๋ณด๊ด€ํ•œ๋‹ค. 

์ฐฝ๊ณ ์— ๋ณด๊ด€๋˜๋Š” ํ† ๋งˆํ† ๋“ค ์ค‘์—๋Š” ์ž˜ ์ต์€ ๊ฒƒ๋„ ์žˆ์ง€๋งŒ, ์•„์ง ์ต์ง€ ์•Š์€ ํ† ๋งˆํ† ๋“ค๋„ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.
๋ณด๊ด€ ํ›„ ํ•˜๋ฃจ๊ฐ€ ์ง€๋‚˜๋ฉด,
์ต์€ ํ† ๋งˆํ† ๋“ค์˜ ์ธ์ ‘ํ•œ ๊ณณ์— ์žˆ๋Š” ์ต์ง€ ์•Š์€ ํ† ๋งˆํ† ๋“ค์€ ์ต์€ ํ† ๋งˆํ† ์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ ์ต๊ฒŒ ๋œ๋‹ค.
ํ•˜๋‚˜์˜ ํ† ๋งˆํ† ์˜ ์ธ์ ‘ํ•œ ๊ณณ์€ ์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ, ์•ž, ๋’ค ๋„ค ๋ฐฉํ–ฅ์— ์žˆ๋Š” ํ† ๋งˆํ† ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ์— ์žˆ๋Š” ํ† ๋งˆํ† ๋“ค์—๊ฒŒ๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ๋ชปํ•˜๋ฉฐ, ํ† ๋งˆํ† ๊ฐ€ ํ˜ผ์ž ์ €์ ˆ๋กœ ์ต๋Š” ๊ฒฝ์šฐ๋Š” ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.
์ฒ ์ˆ˜๋Š” ์ฐฝ๊ณ ์— ๋ณด๊ด€๋œ ํ† ๋งˆํ† ๋“ค์ด ๋ฉฐ์น ์ด ์ง€๋‚˜๋ฉด ๋‹ค ์ต๊ฒŒ ๋˜๋Š”์ง€, ๊ทธ ์ตœ์†Œ ์ผ์ˆ˜๋ฅผ ์•Œ๊ณ  ์‹ถ์–ด ํ•œ๋‹ค.

ํ† ๋งˆํ† ๋ฅผ ์ฐฝ๊ณ ์— ๋ณด๊ด€ํ•˜๋Š” ๊ฒฉ์ž๋ชจ์–‘์˜ ์ƒ์ž๋“ค์˜ ํฌ๊ธฐ์™€
์ต์€ ํ† ๋งˆํ† ๋“ค๊ณผ ์ต์ง€ ์•Š์€ ํ† ๋งˆํ† ๋“ค์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ,
๋ฉฐ์น ์ด ์ง€๋‚˜๋ฉด ํ† ๋งˆํ† ๋“ค์ด ๋ชจ๋‘ ์ต๋Š”์ง€, ๊ทธ ์ตœ์†Œ ์ผ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ.
๋‹จ, ์ƒ์ž์˜ ์ผ๋ถ€ ์นธ์—๋Š” ํ† ๋งˆํ† ๊ฐ€ ๋“ค์–ด์žˆ์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค.

์ž…๋ ฅ

์ฒซ ์ค„์—๋Š” ์ƒ์ž์˜ ํฌ๊ธฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ์ •์ˆ˜ M,N์ด ์ฃผ์–ด์ง„๋‹ค.
M์€ ์ƒ์ž์˜ ๊ฐ€๋กœ ์นธ์˜ ์ˆ˜, N์€ ์ƒ์ž์˜ ์„ธ๋กœ ์นธ์˜ ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‹จ, 2 ≤ M,N ≤ 1,000 ์ด๋‹ค.
๋‘˜์งธ ์ค„๋ถ€ํ„ฐ๋Š” ํ•˜๋‚˜์˜ ์ƒ์ž์— ์ €์žฅ๋œ ํ† ๋งˆํ† ๋“ค์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
์ฆ‰, ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ์ƒ์ž์— ๋‹ด๊ธด ํ† ๋งˆํ† ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
ํ•˜๋‚˜์˜ ์ค„์—๋Š” ์ƒ์ž ๊ฐ€๋กœ์ค„์— ๋“ค์–ด์žˆ๋Š” ํ† ๋งˆํ† ์˜ ์ƒํƒœ๊ฐ€ M๊ฐœ์˜ ์ •์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค.
์ •์ˆ˜ 1์€ ์ต์€ ํ† ๋งˆํ† , ์ •์ˆ˜ 0์€ ์ต์ง€ ์•Š์€ ํ† ๋งˆํ† , ์ •์ˆ˜ -1์€ ํ† ๋งˆํ† ๊ฐ€ ๋“ค์–ด์žˆ์ง€ ์•Š์€ ์นธ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

ํ† ๋งˆํ† ๊ฐ€ ํ•˜๋‚˜ ์ด์ƒ ์žˆ๋Š” ๊ฒฝ์šฐ๋งŒ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์—ฌ๋Ÿฌ๋ถ„์€ ํ† ๋งˆํ† ๊ฐ€ ๋ชจ๋‘ ์ต์„ ๋•Œ๊นŒ์ง€์˜ ์ตœ์†Œ ๋‚ ์งœ๋ฅผ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.
๋งŒ์•ฝ, ์ €์žฅ๋  ๋•Œ๋ถ€ํ„ฐ ๋ชจ๋“  ํ† ๋งˆํ† ๊ฐ€ ์ต์–ด์žˆ๋Š” ์ƒํƒœ์ด๋ฉด 0์„ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๊ณ ,
ํ† ๋งˆํ† ๊ฐ€ ๋ชจ๋‘ ์ต์ง€๋Š” ๋ชปํ•˜๋Š” ์ƒํ™ฉ์ด๋ฉด -1์„ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿงž ํ’€์ด

๋”๋ณด๊ธฐ

ํ’€์ด

# [ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 7576๋ฒˆ ๋ฌธ์ œ: ํ† ๋งˆํ† 

import sys                                                          # sys ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
from collections import deque                                       # deque ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

m, n = map(int, input().split())                                    # m, n ์ž…๋ ฅ ๋ฐ ํ• ๋‹น
storage = [list(map(int,input().split())) for _ in range(n)]        # ํ† ๋งˆํ†  ์ฐฝ๊ณ  ์ž…๋ ฅ ๋ฐ ํ• ๋‹น

dx = [1, -1, 0, 0]                                                  # x ์ด๋™ ์ขŒํ‘œ
dy = [0, 0, 1, -1]                                                  # y ์ด๋™ ์ขŒํ‘œ

q = deque()                                                         # ๋นˆ queue ํ• ๋‹น
dis = [[0] * m for _ in range(n)]                                   # ๊ฑฐ๋ฆฌ๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•œ dis ๋ฐฐ์—ด ํ• ๋‹น

check1 = 0                                                          # ์•ˆ ์ต์€ ํ† ๋งˆํ† ๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ check1 ํ• ๋‹น
for c1 in storage:                                                  # storage์˜ ๊ฐ ํ–‰๋งˆ๋‹ค
    if 0 not in c1:                                                 # ์•ˆ ์ต์€ ํ† ๋งˆํ† ๊ฐ€ ์—†๋‹ค๋ฉด (0)
        check1 += 1                                                 # check1 1์”ฉ ์ฆ๊ฐ€
if check1 == n:                                                     # check1๊ณผ n์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ™๋‹ค๋ฉด
    print(0)                                                        # 0 ์ถœ๋ ฅ
    sys.exit()                                                      # ์‹คํ–‰์ค‘์ธ ์Šคํฌ๋ฆฝํŠธ ์ข…๋ฃŒ

for j in range(n):
    for i in range(m):
        if storage[j][i] == 1:                                      # ์ต์€ ํ† ๋งˆํ† ๋ผ๋ฉด (1)
            q.append((i, j))                                        # ์ต์€ ํ† ๋งˆํ† ์˜ ์ขŒํ‘œ queue์— ์ถ”๊ฐ€

while q:                                                            # q์˜ ์š”์†Œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ณ„์† ๋ฐ˜๋ณต
    x, y = q.popleft()                                              # q ์š”์†Œ ๊บผ๋‚ด์„œ x, y์— ํ• ๋‹น
    for k in range(4):
        nx = dx[k] + x
        ny = dy[k] + y
        if 0 <= nx < m and 0 <= ny < n and storage[ny][nx] == 0:    # ๋ฒ”์œ„ ๋‚ด์— ์žˆ์œผ๋ฉด์„œ, ์•ˆ ์ต์€ ํ† ๋งˆํ† ์ผ ๊ฒฝ์šฐ (0)
            storage[ny][nx] = 1                                     # ์ต์€ ํ† ๋งˆํ† ๋กœ ๋ณ€๊ฒฝ
            q.append((nx, ny))                                      # ํ•ด๋‹น ์ขŒํ‘œ queue์— ์ถ”๊ฐ€
            dis[ny][nx] = dis[y][x] + 1                             # ํ† ๋งˆํ† ๊ฐ€ ์ต์€ ๋‚ ์งœ ๋„ฃ๊ธฐ

ans = 0                                                             # ๋‚ ์งœ๋ฅผ ๋‹ด์„ ans ํ• ๋‹น

for c2 in storage:                                                  # storage ๊ฐ ํ–‰๋งˆ๋‹ค ํƒ์ƒ‰
    if 0 in c2:                                                     # ์•ˆ ์ต์€ ํ† ๋งˆํ† ๊ฐ€ ์•„์ง ์žˆ๋‹ค๋ฉด
        print(-1)                                                   # -1 ์ถœ๋ ฅ
        sys.exit(0)                                                 # ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ์ข…๋ฃŒ

for l1 in range(n):
    for l2 in range(m):
        if dis[l1][l2] > ans:
            ans = dis[l1][l2]                                       # ์ตœ๋Œ“๊ฐ’ ํ• ๋‹น

print(ans)                                                          # ans ์ถœ๋ ฅ

๊ทธ๋ฆผ

๐Ÿ“„ ๋ฌธ์ œ

๋ฌธ์ œ

์–ด๋–ค ํฐ ๋„ํ™”์ง€์— ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ ธ ์žˆ์„ ๋•Œ, ๊ทธ ๊ทธ๋ฆผ์˜ ๊ฐœ์ˆ˜์™€, ๊ทธ ๊ทธ๋ฆผ ์ค‘ ๋„“์ด๊ฐ€ ๊ฐ€์žฅ ๋„“์€ ๊ฒƒ์˜ ๋„“์ด๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ๋ผ. ๋‹จ, ๊ทธ๋ฆผ์ด๋ผ๋Š” ๊ฒƒ์€ 1๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์„ ํ•œ ๊ทธ๋ฆผ์ด๋ผ๊ณ  ์ •์˜ํ•˜์ž.
๊ฐ€๋กœ๋‚˜ ์„ธ๋กœ๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์€ ์—ฐ๊ฒฐ์ด ๋œ ๊ฒƒ์ด๊ณ  ๋Œ€๊ฐ์„ ์œผ๋กœ ์—ฐ๊ฒฐ์ด ๋œ ๊ฒƒ์€ ๋–จ์–ด์ง„ ๊ทธ๋ฆผ์ด๋‹ค.
๊ทธ๋ฆผ์˜ ๋„“์ด๋ž€ ๊ทธ๋ฆผ์— ํฌํ•จ๋œ 1์˜ ๊ฐœ์ˆ˜์ด๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋„ํ™”์ง€์˜ ์„ธ๋กœ ํฌ๊ธฐ n(1 ≤ n ≤ 500)๊ณผ ๊ฐ€๋กœ ํฌ๊ธฐ m(1 ≤ m ≤ 500)์ด ์ฐจ๋ก€๋กœ ์ฃผ์–ด์ง„๋‹ค.
๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ n+1 ์ค„ ๊นŒ์ง€ ๊ทธ๋ฆผ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
(๋‹จ ๊ทธ๋ฆผ์˜ ์ •๋ณด๋Š” 0๊ณผ 1์ด ๊ณต๋ฐฑ์„ ๋‘๊ณ  ์ฃผ์–ด์ง€๋ฉฐ, 0์€ ์ƒ‰์น ์ด ์•ˆ๋œ ๋ถ€๋ถ„, 1์€ ์ƒ‰์น ์ด ๋œ ๋ถ€๋ถ„์„ ์˜๋ฏธํ•œ๋‹ค)

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ๊ทธ๋ฆผ์˜ ๊ฐœ์ˆ˜, ๋‘˜์งธ ์ค„์—๋Š” ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋„“์€ ๊ทธ๋ฆผ์˜ ๋„“์ด๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ๋ผ.
๋‹จ, ๊ทธ๋ฆผ์ด ํ•˜๋‚˜๋„ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ฐ€์žฅ ๋„“์€ ๊ทธ๋ฆผ์˜ ๋„“์ด๋Š” 0์ด๋‹ค.

๐Ÿงž ํ’€์ด

๋”๋ณด๊ธฐ

ํ’€์ด

# [ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 1926๋ฒˆ ๋ฌธ์ œ: ๊ทธ๋ฆผ

from collections import deque                                                                               # deque ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

n, m = map(int, input().split())                                                                            # n, m ์ž…๋ ฅ ๋ฐ ํ• ๋‹น
draw = [list(map(int, input().split())) for _ in range(n)]                                                  # draw 2์ฐจ์› ๋ฐฐ์—ด ์ž…๋ ฅ ๋ฐ ํ• ๋‹น

dx = [1, -1, 0, 0]                                                                                          # ์ขŒ, ์šฐ ์ด๋™
dy = [0, 0, 1, -1]                                                                                          # ์ƒ, ํ•˜ ์ด๋™

check = [[0] * m for _ in range(n)]                                                                         # ๋ฐฉ๋ฌธ ์—ฌ๋ถ€ ํ™•์ธํ•  ๋ฐฐ์—ด ๋นˆ ๋ฐฐ์—ด ํ• ๋‹น
a_list = []                                                                                                 # ๊ทธ๋ฆผ ๋„“์ด ๋‹ด์„ ๋นˆ a_list ํ• ๋‹น

q = deque()                                                                                                 # ๋นˆ queue ํ• ๋‹น

for i in range(n):                                                                                          # n๋งŒํผ ๋ฐ˜๋ณต
    for j in range(m):                                                                                      # m๋งŒํผ ๋ฐ˜๋ณต
        if draw[i][j] == 1 and check[i][j] != -1:                                                           # ๊ทธ๋ฆผ์ด๋ฉด์„œ (1), ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ (-1)
            check[i][j] = -1                                                                                # ๋ฐฉ๋ฌธํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ
            q.append((j, i))                                                                                # q์— ํ•ด๋‹น ์ขŒํ‘œ ๋„ฃ๊ธฐ
            cnt = 1                                                                                         # ๊ทธ๋ฆผ ๋„“์ด ์ดˆ๊ธฐ๊ฐ’ 1

            while q:                                                                                        # q์— ์š”์†Œ๊ฐ€ ์žˆ์œผ๋ฉด ๊ณ„์† ๋ฐ˜๋ณต
                x, y = q.popleft()                                                                          # q์—์„œ ๊ฐ’ ๋นผ์„œ x, y์— ํ• ๋‹น
                for k in range(4):                                                                          # ์ƒ, ํ•˜, ์ขŒ, ์šฐ๋งŒํผ ๋ฐ˜๋ณต
                    nx = dx[k] + x                                                                          # nx์— ์ด๋™ํ•œ ๋งŒํผ์˜ ๊ฐ’ ์ถ”๊ฐ€
                    ny = dy[k] + y                                                                          # ny์— ์ด๋™ํ•œ ๋งŒํผ์˜ ๊ฐ’ ์ถ”๊ฐ€
                    if 0 <= nx < m and 0 <= ny < n and check[ny][nx] != -1 and draw[ny][nx] != 0:           # nx, ny๊ฐ€ ๋ฒ”์œ„ ๋‚ด์— ์žˆ์œผ๋ฉด์„œ, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๊ณ , ๊ทธ๋ฆผ์ด ์•„๋‹ˆ์ง€ ์•Š์„ ๋•Œ
                        check[ny][nx] = -1                                                                  # ๋ฐฉ๋ฌธํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ
                        cnt += 1                                                                            # ๊ทธ๋ฆผ ๋„“์ด 1 ์ถ”๊ฐ€
                        q.append((nx, ny))                                                                  # q์— ํ•ด๋‹น ์ขŒํ‘œ ์ถ”๊ฐ€

            else:                                                                                           # ๋ฐ˜๋ณต๋ฌธ์ด ๋๋‚  ๊ฒฝ์šฐ, (์ฃผ๋ณ€์— ๋” ์ด์ƒ ๊ทธ๋ฆผ์ด ์ด์–ด์ง€์ง€ ์•Š์„ ๊ฒฝ์šฐ)
                a_list.append(cnt)                                                                          # ๊ทธ๋ฆผ ๋„“์ด cnt๋ฅผ a_list์— ์ถ”๊ฐ€

if len(a_list) != 0:
    print(len(a_list))                                                                                      # ๊ทธ๋ฆผ์˜ ๊ฐฏ์ˆ˜ ์ถœ๋ ฅ
    print(max(a_list))                                                                                      # ๊ทธ๋ฆผ ์ค‘ ์ตœ๋Œ€ ๋„“์ด ์ถœ๋ ฅ
else:
    print(0)
    print(0)

์Šคํƒ ์ˆ˜์—ด

๐Ÿ“„ ๋ฌธ์ œ

๋ฌธ์ œ

์Šคํƒ (stack)์€ ๊ธฐ๋ณธ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜๋กœ, ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ๋•Œ ์ž์ฃผ ์ด์šฉ๋˜๋Š” ๊ฐœ๋…์ด๋‹ค.
์Šคํƒ์€ ์ž๋ฃŒ๋ฅผ ๋„ฃ๋Š” (push) ์ž…๊ตฌ์™€ ์ž๋ฃŒ๋ฅผ ๋ฝ‘๋Š” (pop) ์ž…๊ตฌ๊ฐ€ ๊ฐ™์•„
์ œ์ผ ๋‚˜์ค‘์— ๋“ค์–ด๊ฐ„ ์ž๋ฃŒ๊ฐ€ ์ œ์ผ ๋จผ์ € ๋‚˜์˜ค๋Š” (LIFO, Last in First out) ํŠน์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

1๋ถ€ํ„ฐ n๊นŒ์ง€์˜ ์ˆ˜๋ฅผ ์Šคํƒ์— ๋„ฃ์—ˆ๋‹ค๊ฐ€ ๋ฝ‘์•„ ๋Š˜์–ด๋†“์Œ์œผ๋กœ์จ, ํ•˜๋‚˜์˜ ์ˆ˜์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
์ด๋•Œ, ์Šคํƒ์— pushํ•˜๋Š” ์ˆœ์„œ๋Š” ๋ฐ˜๋“œ์‹œ ์˜ค๋ฆ„์ฐจ์ˆœ์„ ์ง€ํ‚ค๋„๋ก ํ•œ๋‹ค๊ณ  ํ•˜์ž.
์ž„์˜์˜ ์ˆ˜์—ด์ด ์ฃผ์–ด์กŒ์„ ๋•Œ ์Šคํƒ์„ ์ด์šฉํ•ด ๊ทธ ์ˆ˜์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€,
์žˆ๋‹ค๋ฉด ์–ด๋–ค ์ˆœ์„œ๋กœ push์™€ pop ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค.
์ด๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ.

์ž…๋ ฅ

์ฒซ ์ค„์— n (1 ≤ n ≤ 100,000)์ด ์ฃผ์–ด์ง„๋‹ค.
๋‘˜์งธ ์ค„๋ถ€ํ„ฐ n๊ฐœ์˜ ์ค„์—๋Š” ์ˆ˜์—ด์„ ์ด๋ฃจ๋Š” 1์ด์ƒ n์ดํ•˜์˜ ์ •์ˆ˜๊ฐ€ ํ•˜๋‚˜์”ฉ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค.
๋ฌผ๋ก  ๊ฐ™์€ ์ •์ˆ˜๊ฐ€ ๋‘ ๋ฒˆ ๋‚˜์˜ค๋Š” ์ผ์€ ์—†๋‹ค.

์ถœ๋ ฅ

์ž…๋ ฅ๋œ ์ˆ˜์—ด์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ํ•œ ์ค„์— ํ•œ ๊ฐœ์”ฉ ์ถœ๋ ฅํ•œ๋‹ค.
push์—ฐ์‚ฐ์€ +๋กœ, pop ์—ฐ์‚ฐ์€ -๋กœ ํ‘œํ˜„ํ•˜๋„๋ก ํ•œ๋‹ค. ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ NO๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿงž ํ’€์ด

๋”๋ณด๊ธฐ

ํ’€์ด (์‹œ๊ฐ„ ์ดˆ๊ณผ) (์ง€๊ธˆ ํ™•์ธํ•˜๋‹ˆ, ํŠน์ • ์ž…๋ ฅ๊ฐ’์— ๋Œ€ํ•œ ์˜ค๋ฅ˜๋„ ์žˆ์Œ)

# 100,000์— ์ œํ•œ ์‹œ๊ฐ„ 2์ดˆ๋ฉด ์ด์ค‘ for๋ฌธ์„ ๋Œ๋ฆด ๋•Œ, ํ™•์ •์ ์œผ๋กœ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค. 

# [ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 1874๋ฒˆ ๋ฌธ์ œ: ์Šคํƒ ์ˆ˜์—ด

import sys

n = int(sys.stdin.readline())

stack = []
c_list = []

for _ in range(n):
    tmp = int(sys.stdin.readline())
    for i in range(1, tmp+1):
        if i not in stack and i not in c_list:
            stack.append(i)
            print('+')
    c_list.append(stack.pop())
    print('-')

 

๋‹ค๋ฅธ ์‚ฌ๋žŒ ํ’€์ด

n = int(input())                    # n ์ž…๋ ฅ ๋ฐ ํ• ๋‹น
stack = []                          # ๋นˆ ์Šคํƒ ํ• ๋‹น
result = []                         # ๊ฒฐ๊ณผ๊ฐ’ ๋‹ด์„ ๋ฆฌ์ŠคํŠธ ํ• ๋‹น
count = 0                           # ๋“ค์–ด๊ฐ„ ์ˆซ์ž๋ฅผ ์…€ count ๋ณ€์ˆ˜ ํ• ๋‹น
X = True                            # ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒฝ์šฐ False๋กœ ๋ฐ”๊ฟ”์คŒ

for _ in range(n):                  # n๋งŒํผ ๋ฐ˜๋ณต
    num = int(input())              # num์— ์ˆซ์ž ์ž…๋ ฅ ๋ฐ›์Œ

    while count < num:              # count๊ฐ€ num๋ณด๋‹ค ํฌ์ง€ ์•Š์„ ๊ฒฝ์šฐ ๊ณ„์† ๋ฐ˜๋ณต
        count += 1                  # count 1 ์ฆ๊ฐ€
        stack.append(count)         # ์Šคํƒ์— count ์ถ”๊ฐ€
        result.append("+")          # result ๋ฆฌ์ŠคํŠธ์—๋„ '+' ์ถ”๊ฐ€

    if stack[-1] == num:            # stack์˜ ๋งˆ์ง€๋ง‰ ์ˆซ์ž๊ฐ€ num๊ณผ ๊ฐ™์„ ๋•Œ,
        stack.pop()                 # ํ•ด๋‹น ์ˆซ์ž๋ฅผ pop()
        result.append("-")          # ๋™์‹œ์— result ๋ฆฌ์ŠคํŠธ์— '-' ์ถ”๊ฐ€
    else:
        X = False                   # ๊ทธ๋ ‡์ง€ ์•Š์„ ๊ฒฝ์šฐ, False๋กœ X ๊ฐ’์„ ๋ณ€ํ™˜
        break                       # ์ดํ›„ break๋ฅผ ํ†ตํ•ด ๋ฐ”๋กœ ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ

if X == False:                      # ๋งŒ์•ฝ X๊ฐ€ False ๊ฐ’์ด๋ฉด
    print("NO")                     # 'No'๋ฅผ ์ถœ๋ ฅ
else:
    for i in result:                # result ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ ์š”์†Œ ๋ณ„๋กœ
        print(i)                    # ์ถœ๋ ฅ

๋ผ๋””์˜ค

๐Ÿ“„ ๋ฌธ์ œ

๋ฌธ์ œ

์ค€ํ•˜๋Š” ๋ผ๋””์˜ค ์ˆ˜์ง‘๊ด‘์œผ๋กœ ์‹ ์ œํ’ˆ์˜ ๋ผ๋””์˜ค๊ฐ€ ๋‚˜์˜ฌ๋•Œ๋งˆ๋‹ค ํฅ๋ถ„์„ ๊ธˆ์น˜ ๋ชปํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.

์ตœ๊ทผ ์ค€ํ•˜๊ฐ€ ๊ตฌ์ž…ํ•œ ๋ผ๋””์˜ค๋Š” ๋งค์šฐ ํ•˜์ดํ…Œํฌ ํ•œ๋ฐ, ๊ทธ ๋ผ๋””์˜ค์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฒ„ํŠผ์ด ์žˆ๋‹ค.

  • ์ฒซ ๋ฒˆ์งธ ๋ฒ„ํŠผ์€ ์ฃผํŒŒ์ˆ˜๋ฅผ 1MHz ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.
  • ๋‘ ๋ฒˆ์งธ ๋ฒ„ํŠผ์€ ์ฃผํŒŒ์ˆ˜๋ฅผ 1MHz ๊ฐ์†Œ์‹œํ‚จ๋‹ค.
  • ๋‚˜๋จธ์ง€ N๊ฐœ์˜ ๋ฒ„ํŠผ์€ ์ฆ๊ฒจ์ฐพ๊ธฐ ๊ธฐ๋Šฅ์œผ๋กœ, ๋ฏธ๋ฆฌ ์ง€์ •๋œ ์ฃผํŒŒ์ˆ˜๋กœ ์ด๋™ํ•œ๋‹ค.

์ค€ํ•˜๋Š” ๋ชธ์ด ์•ˆ์ข‹์•„ ํ•˜๋ฃจ์— ์†๊ฐ€๋ฝ์„ ๋ช‡ ๋ฒˆ ์›€์ง์ด์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ์˜ ๋„์›€์ด ํ•„์š”ํ•˜๋‹ค.

ํ˜„์žฌ ์ฃผํŒŒ์ˆ˜ A์™€ ๋“ฃ๊ณ ์‹ถ์€ ์ฃผํŒŒ์ˆ˜ B๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, 

์ฃผํŒŒ์ˆ˜ A์—์„œ B๋กœ ๊ฐˆ ๋•Œ ๋ˆŒ๋Ÿฌ์•ผ ํ•˜๋Š” ๊ฐ€์žฅ ์ ์€ ๋ฒ„ํŠผ์ˆ˜๋ฅผ ๊ตฌํ•ด์ฃผ์ž.

์ž…๋ ฅ

์ฒซ ์ค„์—” ์ •์ˆ˜ A์™€ B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค (1 ≤ A, B < 1000, A ≠ B).

๋‹ค์Œ ์ค„์—” ์ •์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค (1 ≤ N ≤ 5).

๋‹ค์Œ N๊ฐœ์˜ ์ค„์—” ๋ฏธ๋ฆฌ ์ง€์ •๋˜์–ด ์žˆ๋Š” ์ฃผํŒŒ์ˆ˜๊ฐ€ ์ฃผ์–ด์ง„๋‹ค (์ฃผํŒŒ์ˆ˜๋Š” 1000 ๋ณด๋‹ค ์ž‘๋‹ค).

์ถœ๋ ฅ

์ฃผํŒŒ์ˆ˜ A์—์„œ B๋กœ ๊ฐˆ ๋•Œ ๋ˆŒ๋Ÿฌ์•ผ ํ•˜๋Š” ๋ฒ„ํŠผ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๐Ÿงž ํ’€์ด

๋”๋ณด๊ธฐ

ํ’€์ด

# [ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 3135๋ฒˆ ๋ฌธ์ œ: ๋ผ๋””์˜ค

a, b = map(int, input().split())                        # a, b ์ž…๋ ฅ ๋ฐ ํ• ๋‹น
n = int(input())                                        # n ๊ฐ’ ์ž…๋ ฅ ๋ฐ ํ• ๋‹น
f_list = []                                             # ์ฆ๊ฒจ์ฐพ๊ธฐ ์ˆซ์ž๋ฅผ ๋‹ด์„ ๋นˆ ๋ฆฌ์ŠคํŠธ ํ• ๋‹น
for _ in range(n):                                      # n๋งŒํผ ๋ฐ˜๋ณต
    f_list.append(int(input()))                         # f_list์— ๊ฐ’๋“ค ์ž…๋ ฅํ•˜์—ฌ ์ถ”๊ฐ€

button_cnt = 0                                          # ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋Š” ํšŸ์ˆ˜๋ฅผ ๋‹ด์„ button_cnt 0์œผ๋กœ ํ• ๋‹น

m_list = []                                             # ์ฐจ์ด๋ฅผ ๋‹ด์„ m_list ํ• ๋‹น
m_list.append(abs(b-a))                                 # m_list์— a์—์„œ b๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ์˜ ์ ˆ๋Œ“๊ฐ’์„ ์ถ”๊ฐ€
for i in f_list:                                        # ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋งŒํผ ๋ฐ˜๋ณต
    m_list.append(abs(b-i))                             # b - ์ฆ๊ฒจ์ฐพ๊ธฐ ๊ฐ ์š”์†Œ์˜ ์ ˆ๋Œ“๊ฐ’์„ ์ถ”๊ฐ€
min_dif = min(m_list)                                   # min_dif๋Š” ๊ฐ€์žฅ ์ฐจ์ด๊ฐ€ ์ž‘์€ ์š”์†Œ๋ฅผ ํ• ๋‹น
if min_dif != m_list[0]:                                # min_dif๊ฐ€ a์—์„œ b๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ๋ž‘ ๋‹ค๋ฅด๋‹ค๋ฉด,
    button_cnt += 1                                     # ์ฆ๊ฒจ์ฐพ๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋Š” ํšŸ์ˆ˜ 1 ์ฆ๊ฐ€
button_cnt += min_dif                                   # min_dif ๋งŒํผ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋Š” ํšŸ์ˆ˜ ์ฆ๊ฐ€

print(button_cnt)                                       # button_cnt ์ถœ๋ ฅ

์•ˆ์ „ ์˜์—ญ

๐Ÿ“„ ๋ฌธ์ œ

๋ฌธ์ œ

์žฌ๋‚œ๋ฐฉ์žฌ์ฒญ์—์„œ๋Š” ๋งŽ์€ ๋น„๊ฐ€ ๋‚ด๋ฆฌ๋Š” ์žฅ๋งˆ์ฒ ์— ๋Œ€๋น„ํ•ด์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ผ์„ ๊ณ„ํšํ•˜๊ณ  ์žˆ๋‹ค.
๋จผ์ € ์–ด๋–ค ์ง€์—ญ์˜ ๋†’์ด ์ •๋ณด๋ฅผ ํŒŒ์•…ํ•œ๋‹ค.
๊ทธ ๋‹ค์Œ์— ๊ทธ ์ง€์—ญ์— ๋งŽ์€ ๋น„๊ฐ€ ๋‚ด๋ ธ์„ ๋•Œ
๋ฌผ์— ์ž ๊ธฐ์ง€ ์•Š๋Š” ์•ˆ์ „ํ•œ ์˜์—ญ์ด ์ตœ๋Œ€๋กœ ๋ช‡ ๊ฐœ๊ฐ€ ๋งŒ๋“ค์–ด ์ง€๋Š” ์ง€๋ฅผ ์กฐ์‚ฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค.
์ด๋•Œ, ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ,
์žฅ๋งˆ์ฒ ์— ๋‚ด๋ฆฌ๋Š” ๋น„์˜ ์–‘์— ๋”ฐ๋ผ ์ผ์ •ํ•œ ๋†’์ด ์ดํ•˜์˜ ๋ชจ๋“  ์ง€์ ์€ ๋ฌผ์— ์ž ๊ธด๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

์–ด๋–ค ์ง€์—ญ์˜ ๋†’์ด ์ •๋ณด๋Š” ํ–‰๊ณผ ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ๊ฐ N์ธ 2์ฐจ์› ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ์ฃผ์–ด์ง€๋ฉฐ
๋ฐฐ์—ด์˜ ๊ฐ ์›์†Œ๋Š” ํ•ด๋‹น ์ง€์ ์˜ ๋†’์ด๋ฅผ ํ‘œ์‹œํ•˜๋Š” ์ž์—ฐ์ˆ˜์ด๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ์€ N=5์ธ ์ง€์—ญ์˜ ๋†’์ด ์ •๋ณด์ด๋‹ค.


์ด์ œ ์œ„์™€ ๊ฐ™์€ ์ง€์—ญ์— ๋งŽ์€ ๋น„๊ฐ€ ๋‚ด๋ ค์„œ ๋†’์ด๊ฐ€ 4 ์ดํ•˜์ธ ๋ชจ๋“  ์ง€์ ์ด ๋ฌผ์— ์ž ๊ฒผ๋‹ค๊ณ  ํ•˜์ž.
์ด ๊ฒฝ์šฐ์— ๋ฌผ์— ์ž ๊ธฐ๋Š” ์ง€์ ์„ ํšŒ์ƒ‰์œผ๋กœ ํ‘œ์‹œํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 

๋ฌผ์— ์ž ๊ธฐ์ง€ ์•Š๋Š” ์•ˆ์ „ํ•œ ์˜์—ญ์ด๋ผ ํ•จ์€ ๋ฌผ์— ์ž ๊ธฐ์ง€ ์•Š๋Š” ์ง€์ ๋“ค์ด ์œ„, ์•„๋ž˜, ์˜ค๋ฅธ์ชฝ ํ˜น์€ ์™ผ์ชฝ์œผ๋กœ ์ธ์ ‘ํ•ด ์žˆ์œผ๋ฉฐ
๊ทธ ํฌ๊ธฐ๊ฐ€ ์ตœ๋Œ€์ธ ์˜์—ญ์„ ๋งํ•œ๋‹ค.
์œ„์˜ ๊ฒฝ์šฐ์—์„œ ๋ฌผ์— ์ž ๊ธฐ์ง€ ์•Š๋Š” ์•ˆ์ „ํ•œ ์˜์—ญ์€ 5๊ฐœ๊ฐ€ ๋œ๋‹ค
(๊ผญ์ง“์ ์œผ๋กœ๋งŒ ๋ถ™์–ด ์žˆ๋Š” ๋‘ ์ง€์ ์€ ์ธ์ ‘ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์ทจ๊ธ‰ํ•œ๋‹ค). 

๋˜ํ•œ ์œ„์™€ ๊ฐ™์€ ์ง€์—ญ์—์„œ ๋†’์ด๊ฐ€ 6์ดํ•˜์ธ ์ง€์ ์„ ๋ชจ๋‘ ์ž ๊ธฐ๊ฒŒ ๋งŒ๋“œ๋Š” ๋งŽ์€ ๋น„๊ฐ€ ๋‚ด๋ฆฌ๋ฉด
๋ฌผ์— ์ž ๊ธฐ์ง€ ์•Š๋Š” ์•ˆ์ „ํ•œ ์˜์—ญ์€ ์•„๋ž˜ ๊ทธ๋ฆผ์—์„œ์™€ ๊ฐ™์ด ๋„ค ๊ฐœ๊ฐ€ ๋จ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

์ด์™€ ๊ฐ™์ด ์žฅ๋งˆ์ฒ ์— ๋‚ด๋ฆฌ๋Š” ๋น„์˜ ์–‘์— ๋”ฐ๋ผ์„œ ๋ฌผ์— ์ž ๊ธฐ์ง€ ์•Š๋Š” ์•ˆ์ „ํ•œ ์˜์—ญ์˜ ๊ฐœ์ˆ˜๋Š” ๋‹ค๋ฅด๊ฒŒ ๋œ๋‹ค.
์œ„์˜ ์˜ˆ์™€ ๊ฐ™์€ ์ง€์—ญ์—์„œ ๋‚ด๋ฆฌ๋Š” ๋น„์˜ ์–‘์— ๋”ฐ๋ฅธ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ๋‹ค ์กฐ์‚ฌํ•ด ๋ณด๋ฉด
๋ฌผ์— ์ž ๊ธฐ์ง€ ์•Š๋Š” ์•ˆ์ „ํ•œ ์˜์—ญ์˜ ๊ฐœ์ˆ˜ ์ค‘์—์„œ ์ตœ๋Œ€์ธ ๊ฒฝ์šฐ๋Š” 5์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. 

์–ด๋–ค ์ง€์—ญ์˜ ๋†’์ด ์ •๋ณด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ,
์žฅ๋งˆ์ฒ ์— ๋ฌผ์— ์ž ๊ธฐ์ง€ ์•Š๋Š” ์•ˆ์ „ํ•œ ์˜์—ญ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ์–ด๋–ค ์ง€์—ญ์„ ๋‚˜ํƒ€๋‚ด๋Š” 2์ฐจ์› ๋ฐฐ์—ด์˜ ํ–‰๊ณผ ์—ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆ˜ N์ด ์ž…๋ ฅ๋œ๋‹ค.
N์€ 2 ์ด์ƒ 100 ์ดํ•˜์˜ ์ •์ˆ˜์ด๋‹ค.
๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ๊ฐ ์ค„์—๋Š” 2์ฐจ์› ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ N๋ฒˆ์งธ ํ–‰๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ํ–‰์”ฉ ๋†’์ด ์ •๋ณด๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค.
๊ฐ ์ค„์—๋Š” ๊ฐ ํ–‰์˜ ์ฒซ ๋ฒˆ์งธ ์—ด๋ถ€ํ„ฐ N๋ฒˆ์งธ ์—ด๊นŒ์ง€ N๊ฐœ์˜ ๋†’์ด ์ •๋ณด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ž์—ฐ์ˆ˜๊ฐ€
๋นˆ ์นธ์„ ์‚ฌ์ด์— ๋‘๊ณ  ์ž…๋ ฅ๋œ๋‹ค.
๋†’์ด๋Š” 1์ด์ƒ 100 ์ดํ•˜์˜ ์ •์ˆ˜์ด๋‹ค.

์ถœ๋ ฅ

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

๐Ÿงž ํ’€์ด

๋”๋ณด๊ธฐ

ํ’€์ด

# [ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 2468๋ฒˆ ๋ฌธ์ œ: ์•ˆ์ „ ์˜์—ญ

from collections import deque                                                                               # deque ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

n = int(input())                                                                                            # n ์ž…๋ ฅ ๋ฐ ํ• ๋‹น
land = [list(map(int, input().split())) for _ in range(n)]                                                  # land ์ž…๋ ฅ ๋ฐ ํ• ๋‹น

dx = [1, -1, 0, 0]                                                                                          # ์ขŒ์šฐ ์ด๋™
dy = [0, 0, 1, -1]                                                                                          # ์ƒํ•˜ ์ด๋™

Q = deque()                                                                                                 # BFS๋ฅผ ์œ„ํ•œ ๋นˆ ํ ํ• ๋‹น
a_list = []                                                                                                 # ์˜์—ญ์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•œ ๋นˆ a_list ํ• ๋‹น

for k in range(0, 101):                                                                                     # 0๋ถ€ํ„ฐ 100๊นŒ์ง€์˜ ๋ฌผ๋†’์ด๊นŒ์ง€ ๋ฐ˜๋ณต
    check = [[0] * n for _ in range(n)]                                                                     # ์•ˆ ์ž ๊ธด ๋•…์˜ ๋ฐฉ๋ฌธ ์—ฌ๋ถ€๋ฅผ ์œ„ํ•œ ๋นˆ ๋ฐฐ์—ด ํ• ๋‹น
    cnt = 0                                                                                                 # ๋•…์˜ ๊ฐฏ์ˆ˜ 0์œผ๋กœ ์ดˆ๊ธฐํ™” ๋ฐ ํ• ๋‹น
    for i in range(n):
        for j in range(n):
            if land[i][j] > k and check[i][j] != -1:                                                        # ๋•…์ด ๋ฌผ๋†’์ด๋ณด๋‹ค ๋†’์œผ๋ฉฐ, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
                check[i][j] = -1                                                                            # ํ•ด๋‹น ๋•…์„ ๋ฐฉ๋ฌธํ•œ ๊ฒƒ์œผ๋กœ ๋ฐ”๊ฟˆ (-1)
                Q.append((i, j))                                                                            # Q์— ํ•ด๋‹น ์ขŒํ‘œ ๊ฐ’ ์ถ”๊ฐ€
                while Q:                                                                                    # Q์— ์š”์†Œ๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ, ๊ณ„์† ๋ฐ˜๋ณต
                    x, y = Q.popleft()                                                                      # Q์˜ ์š”์†Œ๋ฅผ ๋นผ๋‚ด์–ด x, y์— ๊ฐ๊ฐ ํ• ๋‹น
                    for l in range(4):                                                                      # ์ƒ, ํ•˜, ์ขŒ, ์šฐ๋งŒํผ ๋ฐ˜๋ณต
                        nx = dx[l] + x
                        ny = dy[l] + y
                        if 0 <= nx < n and 0 <= ny < n and check[nx][ny] != -1 and land[nx][ny] > k:        # nx์™€ ny๊ฐ€ ์˜์—ญ ์•ˆ์— ์žˆ์œผ๋ฉด์„œ, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๊ณ , ํ•ด๋‹น ๋•…์ด ๋ฌผ๋†’์ด๋ณด๋‹ค ๋†’์„ ๋•Œ,
                            check[nx][ny] = -1                                                              # ํ•ด๋‹น ๋•…์„ ๋ฐฉ๋ฌธํ•œ ๊ฒƒ์œผ๋กœ ๋ฐ”๊ฟ”์คŒ
                            Q.append((nx, ny))                                                              # Q์— nx, ny ์ถ”๊ฐ€
                else:
                    cnt += 1                                                                                # Q์— ์š”์†Œ๊ฐ€ ์—†์œผ๋ฉด, ๋•…์˜ ๊ฐฏ์ˆ˜ 1 ์ถ”๊ฐ€
    a_list.append(cnt)                                                                                      # ๊ฐ ๋ฌผ๋†’์ด๋งˆ๋‹ค ๋•…์˜ ์ตœ์ข… ๊ฐฏ์ˆ˜ a_list์— ์ถ”๊ฐ€

print(max(a_list))                                                                                          # a_list์˜ ์ตœ๋Œ“๊ฐ’ ์ถœ๋ ฅ

๋‹จ์ง€ ๋ฒˆํ˜ธ ๋ถ™์ด๊ธฐ

๐Ÿ“„ ๋ฌธ์ œ

๋ฌธ์ œ

<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ™์ด ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ์ง€๋„๊ฐ€ ์žˆ๋‹ค.
1์€ ์ง‘์ด ์žˆ๋Š” ๊ณณ์„, 0์€ ์ง‘์ด ์—†๋Š” ๊ณณ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
์ฒ ์ˆ˜๋Š” ์ด ์ง€๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์—ฐ๊ฒฐ๋œ ์ง‘์˜ ๋ชจ์ž„์ธ ๋‹จ์ง€๋ฅผ ์ •์˜ํ•˜๊ณ ,๋‹จ์ง€์— ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ด๋ ค ํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋–ค ์ง‘์ด ์ขŒ์šฐ, ํ˜น์€ ์•„๋ž˜์œ„๋กœ ๋‹ค๋ฅธ ์ง‘์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.
๋Œ€๊ฐ์„ ์ƒ์— ์ง‘์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ์—ฐ๊ฒฐ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. <๊ทธ๋ฆผ 2>๋Š” <๊ทธ๋ฆผ 1>์„ ๋‹จ์ง€๋ณ„๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ธ ๊ฒƒ์ด๋‹ค.
์ง€๋„๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋‹จ์ง€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ณ ,
๊ฐ ๋‹จ์ง€์— ์†ํ•˜๋Š” ์ง‘์˜ ์ˆ˜๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์ง€๋„์˜ ํฌ๊ธฐ N(์ •์‚ฌ๊ฐํ˜•์ด๋ฏ€๋กœ ๊ฐ€๋กœ์™€ ์„ธ๋กœ์˜ ํฌ๊ธฐ๋Š” ๊ฐ™์œผ๋ฉฐ 5≤N≤25)์ด ์ž…๋ ฅ๋˜๊ณ ,
๊ทธ ๋‹ค์Œ N์ค„์—๋Š” ๊ฐ๊ฐ N๊ฐœ์˜ ์ž๋ฃŒ(0ํ˜น์€ 1)๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค.

์ถœ๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์ด ๋‹จ์ง€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.
๊ทธ๋ฆฌ๊ณ  ๊ฐ ๋‹จ์ง€๋‚ด ์ง‘์˜ ์ˆ˜๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•˜์‹œ์˜ค.



๐Ÿงž ํ’€์ด

๋”๋ณด๊ธฐ

ํ’€์ด

# [ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 2667๋ฒˆ ๋ฌธ์ œ: ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ

from collections import deque                                                                           # deque ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

n = int(input())                                                                                        # n ์ž…๋ ฅ ๋ฐ ํ• ๋‹น
apt = [list(map(int, input())) for _ in range(n)]                                                       # apt ๋ฐฐ์—ด ์ž…๋ ฅ ๋ฐ ํ• ๋‹น

dx = [1, -1, 0, 0]                                                                                      # ์ขŒ, ์šฐ ์ด๋™ dx ํ• ๋‹น
dy = [0, 0, 1, -1]                                                                                      # ์ƒ, ํ•˜ ์ด๋™ dy ํ• ๋‹น

Q = deque()                                                                                             # BFS๋ฅผ ์œ„ํ•œ ๋นˆ Q ํ• ๋‹น
check = [[0] * n for _ in range(n)]                                                                     # ๋ฐฉ๋ฌธ ํ™•์ธ์„ ์œ„ํ•œ check n * n ํฌ๊ธฐ์˜ ๋ฐฐ์—ด๋กœ ํ• ๋‹น

a_list = []                                                                                             # ์ •๋‹ต์„ ๋‹ด์„ ๋นˆ a_list ํ• ๋‹น

for i in range(n):                                                                                      # n๋งŒํผ ์ด์ค‘๋ฐ˜๋ณต
    for j in range(n):
        if apt[i][j] == 1 and check[i][j] != -1:                                                        # ์ง‘(1)์ด๋ฉด์„œ, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜์„ ๋•Œ(not -1)
            check[i][j] = -1                                                                            # ๋ฐฉ๋ฌธํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ (-1)
            cnt = 1                                                                                     # ๋‹จ์ง€์˜ ์•„ํŒŒํŠธ ๊ฐฏ์ˆ˜ 1๋กœ ํ• ๋‹น
            Q.append((i, j))                                                                            # Q์— x ์ขŒํ‘œ i์™€ y ์ขŒํ‘œ j ์ถ”๊ฐ€

            while Q:                                                                                    # Q์— ์š”์†Œ๊ฐ€ ๋“ค์–ด ์žˆ๋‹ค๋ฉด
                x, y = Q.popleft()                                                                      # Q์—์„œ popleftํ•˜์—ฌ x, y์— ๊ฐ’ ํ• ๋‹น
                for l in range(4):                                                                      # ์ƒํ•˜์ขŒ์šฐ๋กœ ๋ฐ˜๋ณต
                    nx = dx[l] + x
                    ny = dy[l] + y
                    if 0 <= nx < n and 0 <= ny < n and check[nx][ny] != -1 and apt[nx][ny] != 0:        # nx์™€ ny๊ฐ€ ์•„ํŒŒํŠธ ๋ฐฐ์—ด ๋ฒ”์œ„ ๋‚ด์— ์žˆ์œผ๋ฉฐ, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๊ณ  (not -1), ์ง‘์ด ์•„๋‹ˆ์ง€ ์•Š์„ ๋•Œ (not 0):
                        check[nx][ny] = -1                                                              # ๋ฐฉ๋ฌธํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ (-1)
                        cnt += 1                                                                        # ์ง‘ ๊ฐฏ์ˆ˜ 1 ์ถ”๊ฐ€
                        Q.append((nx, ny))                                                              # Q์— nx, ny ์ถ”๊ฐ€

            else:                                                                                       # Q์— ์š”์†Œ๊ฐ€ ์—†๋‹ค๋ฉด
                a_list.append(cnt)                                                                      # ์•„ํŒŒํŠธ ๋‹จ์ง€ ๋‹น ์ง‘ ์ตœ์ข… ๊ฐฏ์ˆ˜๋ฅผ a_list์— ์ถ”๊ฐ€

print(len(a_list))                                                                                      # a_list์˜ ๊ธธ์ด ์ถœ๋ ฅ
a_list.sort()                                                                                           # a_list ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
for a in a_list:                                                                                        # a_list์˜ ์š”์†Œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ
    print(a)                                                                                            # ์ถœ๋ ฅ

๋ฏธ๋กœ ํƒ์ƒ‰

๐Ÿ“„ ๋ฌธ์ œ

๋ฌธ์ œ

N×Mํฌ๊ธฐ์˜ ๋ฐฐ์—ด๋กœ ํ‘œํ˜„๋˜๋Š” ๋ฏธ๋กœ๊ฐ€ ์žˆ๋‹ค.

๋ฏธ๋กœ์—์„œ 1์€ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์นธ์„ ๋‚˜ํƒ€๋‚ด๊ณ , 0์€ ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ์นธ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฏธ๋กœ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, (1, 1)์—์„œ ์ถœ๋ฐœํ•˜์—ฌ (N, M)์˜ ์œ„์น˜๋กœ ์ด๋™ํ•  ๋•Œ ์ง€๋‚˜์•ผ ํ•˜๋Š” ์ตœ์†Œ์˜ ์นธ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ํ•œ ์นธ์—์„œ ๋‹ค๋ฅธ ์นธ์œผ๋กœ ์ด๋™ํ•  ๋•Œ, ์„œ๋กœ ์ธ์ ‘ํ•œ ์นธ์œผ๋กœ๋งŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

์œ„์˜ ์˜ˆ์—์„œ๋Š” 15์นธ์„ ์ง€๋‚˜์•ผ (N, M)์˜ ์œ„์น˜๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ์นธ์„ ์…€ ๋•Œ์—๋Š” ์‹œ์ž‘ ์œ„์น˜์™€ ๋„์ฐฉ ์œ„์น˜๋„ ํฌํ•จํ•œ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋‘ ์ •์ˆ˜ N, M(2 ≤ N, M ≤ 100)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” M๊ฐœ์˜ ์ •์ˆ˜๋กœ ๋ฏธ๋กœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ฐ๊ฐ์˜ ์ˆ˜๋“ค์€ ๋ถ™์–ด์„œ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์ง€๋‚˜์•ผ ํ•˜๋Š” ์ตœ์†Œ์˜ ์นธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ํ•ญ์ƒ ๋„์ฐฉ์œ„์น˜๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋งŒ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„๋‹ค.

๐Ÿงž ํ’€์ด

๋”๋ณด๊ธฐ

ํ’€์ด

# ๋ฐฑ์ค€ 2178๋ฒˆ ๋ฌธ์ œ: ๋ฏธ๋กœ ํƒ์ƒ‰

from collections import deque                                                               # ํ๋ฅผ ์œ„ํ•œ deque ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

n, m = map(int, input().split())                                                            # n, m ์ž…๋ ฅ ๋ฐ ํ• ๋‹น

dx = [1, -1, 0, 0]                                                                          # ์ขŒ์šฐ๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๊ฒŒ dx ํ• ๋‹น
dy = [0, 0, 1, -1]                                                                          # ์ƒํ•˜๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๊ฒŒ dy ํ• ๋‹น

maze = []                                                                                   # ๋ฏธ๋กœ๋ฅผ ์œ„ํ•œ ๋นˆ ๋ฐฐ์—ด ํ• ๋‹น

for _ in range(n):                                                                          # n๋งŒํผ ๋ฐ˜๋ณต
    maze.append(list(map(int, input())))                                                    # ๋ฏธ๋กœ ์ž…๋ ฅ ๊ฐ’ ๋ฐ›์•„์„œ 2์ฐจ์› ๋ฐฐ์—ด ๋งŒ๋“ค๊ธฐ

Q = deque()                                                                                 # ๋นˆ ํ ํ• ๋‹น
check = [[0] * m for _ in range(n)]                                                         # ๋ฐฉ๋ฌธ ์‹œ ์ฒดํฌํ•  ๋นˆ n * m ํฌ๊ธฐ์˜ 2์ฐจ์› ๋ฐฐ์—ด ํ• ๋‹น

check[0][0] = -1                                                                            # ์‹œ์ž‘ ์ง€์ ์€ ์ฒดํฌ (-1)๋กœ ํ‘œ์‹œ
Q.append((0, 0, 1))                                                                         # ํ์— 0, 0, 1 ์ถ”๊ฐ€

while Q:                                                                                    # ํ์— ์š”์†Œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์— ๊ณ„์† ๋ฐ˜๋ณต
    x, y, dis = Q.popleft()                                                                 # ํ์˜ ์ฒซ ์š”์†Œ๋ฅผ popํ•˜์—ฌ x, y, dis์— ํ• ๋‹น

    if x == m - 1 and y == n - 1:                                                           # x ํ˜น์€ y๊ฐ€ m, n์œผ๋กœ ๋ ์ž๋ฆฌ์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ,
        print(dis)                                                                          # ๊ฑฐ๋ฆฌ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” dis ๊ฐ’ ์ถœ๋ ฅ (BFS๋Š” ์ตœ๋‹จ๊ฑฐ๋ฆฌ๋ฅผ ์ถœ๋ ฅํ•ด์คŒ)
        break                                                                               # ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒ

    for i in range(4):                                                                      # ์ƒํ•˜์ขŒ์šฐ๋กœ ์›€์ง์—ฌ์•ผ ํ•˜๊ธฐ์— 4๋งŒํผ ๋ฐ˜๋ณต
        nx = dx[i] + x                                                                      # x๊ฐ’ ๋ณ€๊ฒฝํ•˜๋ฉฐ ์ขŒ์šฐ๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•จ
        ny = dy[i] + y                                                                      # y๊ฐ’ ๋ณ€๊ฒฝํ•˜๋ฉฐ ์ƒํ•˜๋กœ ์›€์ง์ผ ์ˆ˜ ์žˆ๊ฒŒ ํ•จ

        if 0 <= nx < m and 0 <= ny < n and check[ny][nx] != -1 and maze[ny][nx] != 0:       # nx, ny๊ฐ€ ๋ฏธ๋กœ ์•ˆ์— ์žˆ์œผ๋ฉด์„œ, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๊ณ , ํ•ด๋‹น ์œ„์น˜๊ฐ€ ๋ฏธ๋กœ์˜ ๋ฒฝ(0)์ด ์•„๋‹ ๊ฒฝ์šฐ,
                check[ny][nx] = -1                                                          # ํ•ด๋‹น ์œ„์น˜๋ฅผ ๋ฐฉ๋ฌธํ•จ(-1)๋กœ ๋ฐ”๊ฟ”์คŒ
                Q.append((nx, ny, dis + 1))                                                 # Q์— ์›€์ง์ธ x, y ์œ„์น˜์™€ 1 ์ถ”๊ฐ€ํ•œ ๊ฑฐ๋ฆฌ๋ฅผ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•ด ์คŒ

์ œ๋กœ

๐Ÿ“„ ๋ฌธ์ œ

๋ฌธ์ œ

๋‚˜์ฝ”๋” ๊ธฐ์žฅ ์žฌ๋ฏผ์ด๋Š” ๋™์•„๋ฆฌ ํšŒ์‹์„ ์ค€๋น„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์žฅ๋ถ€๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ค‘์ด๋‹ค.
์žฌํ˜„์ด๋Š” ์žฌ๋ฏผ์ด๋ฅผ ๋„์™€์„œ ๋ˆ์„ ๊ด€๋ฆฌํ•˜๋Š” ์ค‘์ธ๋ฐ,
์• ์„ํ•˜๊ฒŒ๋„ ํ•ญ์ƒ ์ •์‹ ์—†๋Š” ์žฌํ˜„์ด๋Š” ๋ˆ์„ ์‹ค์ˆ˜๋กœ ์ž˜๋ชป ๋ถ€๋ฅด๋Š” ์‚ฌ๊ณ ๋ฅผ ์น˜๊ธฐ ์ผ์‘ค์˜€๋‹ค.
์žฌํ˜„์ด๋Š” ์ž˜๋ชป๋œ ์ˆ˜๋ฅผ ๋ถ€๋ฅผ ๋•Œ๋งˆ๋‹ค 0์„ ์™ธ์ณ์„œ, ๊ฐ€์žฅ ์ตœ๊ทผ์— ์žฌ๋ฏผ์ด๊ฐ€ ์“ด ์ˆ˜๋ฅผ ์ง€์šฐ๊ฒŒ ์‹œํ‚จ๋‹ค.
์žฌ๋ฏผ์ด๋Š” ์ด๋ ‡๊ฒŒ ๋ชจ๋“  ์ˆ˜๋ฅผ ๋ฐ›์•„ ์ ์€ ํ›„ ๊ทธ ์ˆ˜์˜ ํ•ฉ์„ ์•Œ๊ณ  ์‹ถ์–ด ํ•œ๋‹ค. ์žฌ๋ฏผ์ด๋ฅผ ๋„์™€์ฃผ์ž!

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์— ์ •์ˆ˜ K๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ K ≤ 100,000)
์ดํ›„ K๊ฐœ์˜ ์ค„์— ์ •์ˆ˜๊ฐ€ 1๊ฐœ์”ฉ ์ฃผ์–ด์ง„๋‹ค.
์ •์ˆ˜๋Š” 0์—์„œ 1,000,000 ์‚ฌ์ด์˜ ๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ,
์ •์ˆ˜๊ฐ€ "0" ์ผ ๊ฒฝ์šฐ์—๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์— ์“ด ์ˆ˜๋ฅผ ์ง€์šฐ๊ณ , ์•„๋‹ ๊ฒฝ์šฐ ํ•ด๋‹น ์ˆ˜๋ฅผ ์“ด๋‹ค.
์ •์ˆ˜๊ฐ€ "0"์ผ ๊ฒฝ์šฐ์— ์ง€์šธ ์ˆ˜ ์žˆ๋Š” ์ˆ˜๊ฐ€ ์žˆ์Œ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์ถœ๋ ฅ

์žฌ๋ฏผ์ด๊ฐ€ ์ตœ์ข…์ ์œผ๋กœ ์ ์–ด ๋‚ธ ์ˆ˜์˜ ํ•ฉ์„ ์ถœ๋ ฅํ•œ๋‹ค.
์ตœ์ข…์ ์œผ๋กœ ์ ์–ด๋‚ธ ์ˆ˜์˜ ํ•ฉ์€ 231-1๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋‹ค.

๐Ÿงž ํ’€์ด

๋”๋ณด๊ธฐ

ํ’€์ด

import sys

n = int(sys.stdin.readline())               # ์ •์ˆ˜ n ์ž…๋ ฅ ๋ฐ ํ• ๋‹น

stack = []                                  # ๋นˆ ์Šคํƒ ํ• ๋‹น

for _ in range(n):                          # n๋ฒˆ ๋ฐ˜๋ณต
    integer = int(sys.stdin.readline())     # ์ •์ˆ˜ ์ž…๋ ฅ ๋ฐ ํ• ๋‹น

    if integer == 0:                        # ์ •์ˆ˜๊ฐ€ 0์ด๋ฉด
        stack.pop()                         # ์Šคํƒ์—์„œ ๊ฐ€์žฅ ์œ„์— ์žˆ๋Š” ์ˆ˜ pop()
    else:                                   # ์ •์ˆ˜๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด
        stack.append(integer)               # ์Šคํƒ์— ํ•ด๋‹น ์ •์ˆ˜ ์ถ”๊ฐ€

print(sum(stack))                           # ์Šคํƒ ์•ˆ์— ์žˆ๋Š” ์ •์ˆ˜์˜ ํ•ฉ ์ถœ๋ ฅ

+ Recent posts