[Baekjoon/๐ŸฅˆSilverโ…ก] 1780: ์ข…์ด์˜ ๊ฐœ์ˆ˜

์ตœ๋Œ€ 1 ๋ถ„ ์†Œ์š”

Intro

๋ฌธ์ œ์‚ฌ์ง„ ๋ฌธ์ œ์‚ฌ์ง„

  • ์ข…์ด๊ฐ€ ๋ชจ๋‘ ๋™์ผํ•œ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์กŒ์„ ๋•Œ, ํ•ด๋‹น ์ˆ˜์˜ ์ข…์ด ๊ฐœ์ˆ˜๋ฅผ 1 ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

  • ์ข…์ด๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๋ฉด 9๋“ฑ๋ถ„์„ ํ•œ ํ›„ ์œ„์˜ ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.
    • ์žฌ๊ท€์ ์œผ๋กœ ๊ตฌํ˜„ํ•œ๋‹ค. (๋ถ„ํ• ์ •๋ณต ์‚ฌ์šฉ!)
  • ์ตœ์ข…์ ์œผ๋กœ -1, 0, 1๋กœ๋งŒ ์ฑ„์›Œ์ง„ ์ข…์ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ๊ฐ ์ถœ๋ ฅํ•œ๋‹ค.


Algoritm๐Ÿ‘ฉโ€๐Ÿ’ป

#21.01.24
#1780: ์ข…์ด์˜ ๊ฐœ์ˆ˜

import sys

# ์ข…์ด ์‹œ์ž‘ ์ขŒํ‘œ(x, y)
# ์ข…์ด ๋ ์ขŒํ‘œ(s-1, e-1)
def check(paper, l, x, y, s, e):
  key = paper[x][y]
  if l == 1:
    dic[key] += 1
    return
  else:
    for i in range(x, s):
      for j in range(y, e):
        if key != paper[i][j]:
          l //= 3
          for k in range(x, s, l):
            for m in range(y, e, l):
              check(paper, l, k, m, k+l, m+l)
          return
    dic[key] += 1
    return



N = int(sys.stdin.readline())
paper = []
dic = {-1: 0, 0: 0, 1: 0}

for _ in range(N):
  lst = list(map(int, sys.stdin.readline().split()))
  paper.append(lst)

check(paper, N, 0, 0, N, N)

print(f'{dic[-1]}\n{dic[0]}\n{dic[1]}')


์—ฌ๊ธฐ์„œ ์ž ๊น!!๐Ÿ™‹โ€โ™€๏ธ: f-string ํฌ๋งคํŒ…

  • fโ€™๋ฌธ์ž์—ด {๋ณ€์ˆ˜} ๋ฌธ์ž์—ด..โ€™ ํ˜•ํƒœ๋กœ ๋ณ€์ˆ˜๊ฐ’๊ณผ ๋ฌธ์ž์—ด์„ ํ•œ ๋ฒˆ์— ์ถœ๋ ฅ ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ฒฐ๊ณผ


์ฐธ๊ณ ๐Ÿ“ƒ


์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ์—ฌ๊ธฐ์„œ

๋!! ~(ห˜โ–พห˜~)

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ