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

728x90

๐Ÿšฉ ๋ถ„ํ• ์ •๋ณต, ์žฌ๊ท€

 

thinking

N์ด 3์˜ ๋ฐฐ์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์€ ์ˆซ์ž๋กœ ์•ˆ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉด ๊ณ„์†ํ•ด์„œ ๋‚˜๋ˆ„๋ฉด์„œ -1, 0, 1 ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋ž˜์„œ ๊ฐ™์€ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”์ง€ ์ฒดํฌํ•˜๋Š” checking ์ด๋ผ๋Š” ํ•จ์ˆ˜์™€ 9์นธ์œผ๋กœ ํ–‰๋ ฌ์„ ๋‚˜๋ˆŒ divide ๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๊ตฌํ–ˆ๋‹ค.

์‹œ์ž‘ํ–‰(s_x)๊ณผ ์‹œ์ž‘์—ด (s_y) ์„ ์ธ์ž๋กœ ํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ๊ณ„์† ์ชผ๊ฐœ๋”๋ผ๋„ ๊ฐ’์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ–ˆ๋‹ค.

์ฒ˜์Œ ์ฝ”๋“œ๋ฅผ ์งค ๋•Œ 1๏ธโƒฃ๊ณผ 2๏ธโƒฃ์˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟจ๋”๋‹ˆ ํ‹€๋ ธ๋‹ค. ์ผ๋‹จ ์–ด๋–ค ๊ฐ’์ด ๋‚˜์™”๋Š”์ง€๋ฅผ ๋จผ์ € ์ฒดํฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— 1๏ธโƒฃ๊ณผ 2๏ธโƒฃ์˜ ์ˆœ์„œ๋กœ ๊ตฌ์„ฑํ•ด์•ผํ•œ๋‹ค.

 

์ฝ”๋“œ

# ๊ฐ™์€ ์ˆซ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•จ์ˆ˜
def checking(s_x, s_y, length):  # ์‹œ์ž‘ x, y์ขŒํ‘œ, ์ข…์ด ๊ธธ์ด
    global res
    check = []  # ์ˆซ์ž๊ฐ’์„ ๋„ฃ์„ ๋ฆฌ์ŠคํŠธ
    for i in range(s_x, s_x+length):
        for j in range(s_y, s_y+length):
            if a[i][j] not in check:  # 1๏ธโƒฃ check์— ๊ฐ’์ด ์—†์œผ๋ฉด ๋„ฃ์–ด์ฃผ๊ธฐ
                check.append(a[i][j])
            if len(check) >= 2:  # 2๏ธโƒฃ ๊ฐœ์ˆ˜๊ฐ€ ๋‘๊ฐœ ์ด์ƒ ๋‚˜์˜จ ๊ฒฝ์šฐ ํ•จ์ˆ˜ ์ชผ๊ฐœ์•ผ ํ•˜๋ฏ€๋กœ ์ชผ๊ฐœ๊ณ  ๋ฆฌํ„ด
                divide(s_x, s_y, length)
                return
    # ๊ฐ™์€ ์ข…์ด๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฒฝ์šฐ
    if check[0] == -1:
        res[0] += 1
    elif check[0] == 0:
        res[1] += 1
    elif check[0] == 1:
        res[2] += 1


# 3์œผ๋กœ ๋‚˜๋ˆ„๋Š”(== 9์นธ์œผ๋กœ ๋‚˜๋ˆ„๋Š”) ํ•จ์ˆ˜
def divide(s_x, s_y, length):
    global res
    if length == 1:
        res[a[s_x][s_y]] += 1
        return  # ๋”์ด์ƒ ๋‚˜๋ˆ„์ง€ ์•Š์Œ
    k = length//3
    checking(s_x, s_y, k)
    checking(s_x, s_y+k, k)
    checking(s_x, s_y+2*k, k)
    checking(s_x+k, s_y, k)
    checking(s_x+k, s_y+k, k)
    checking(s_x+k, s_y+2*k, k)
    checking(s_x+2*k, s_y, k)
    checking(s_x+2*k, s_y+k, k)
    checking(s_x+2*k, s_y+2*k, k)



N = int(input())
a = [list(map(int, input().split())) for _ in range(N)]
res = [0, 0, 0]  # -1๊ฐœ์ˆ˜, 0๊ฐœ์ˆ˜, 1๊ฐœ์ˆ˜
checking(0, 0, N)

print(res[0])
print(res[1])
print(res[2])

 

 

ํ›„๊ธฐ

๋‚ด ์ฝ”๋“œ ์ฐธ ๊ทธ์ง€๊ฐ™๋‹ค... ๋„ˆ๋ฌด ๊ธธ๊ณ  ๋А๋ฆฌ๊ณ ...

๋‹ต์€ ๋งž์•˜์œผ๋‚˜ ๋‚˜์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹ค๋ ฅ์€ ๊ทธ๋Œ€๋กœ ์ธ๊ฒƒ ๊ฐ™์•„ ๊ธฐ๋ถ„์ด ๊ตฌ๋ฆฌ๋‹ค

์–ธ์ œ์ฏค ์ฝ”๋“œ๋ฅผ ๊ธฐ๊น”๋‚˜๊ฒŒ ํšจ์œจ์ ์ด๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์งค ์ˆ˜ ์žˆ์„๊นŒ

๋ฉ”๋ชจ๋ฆฌ๋ž‘ ์‹œ๊ฐ„ ์ง„์‹ฌ ๋จธ์„ 129 . . . 

 

๋Œ“๊ธ€