Algorithm Problem/Python

[python] ๋ฐฑ์ค€ - 1074. Z

deo2kim 2020. 8. 19. 08:50
๋ฐ˜์‘ํ˜•

๐Ÿค”๋ฌธ์ œ ํ•ด๊ฒฐ

1. ์žฌ๊ท€,๋ถ„ํ• ์ •๋ณต | S1

2. ๋ชจ๋‘ ์ชผ๊ฐœ๋ ค๊ณ  ํ•˜๋Š”๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ์ดˆ๊ณผ ํ˜น์€ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

3. ๋‚ด๊ฐ€ ์ฐพ๊ณ ์žํ•˜๋Š” ํ–‰๊ณผ ์—ด์ด ํฌํ•จ๋œ ๋ฐ•์Šค๋งŒ ์ฐพ์•„์„œ ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค.

4. ์—ฌ๊ธฐ์„œ ๊ฐ ๋ฐ•์Šค์˜ ์ฒซ ์ˆซ์ž๋ฅผ ๊ตฌํ•œ๋‹ค.

 (1) ์˜ˆ๋ฅผ ๋“ค์–ด ์‚ฌ์ด์ฆˆ๊ฐ€ 8์ธ ๋ฐ•์Šค์˜ ์ฒซ์ˆซ์ž๋Š” 0์ด๋‹ค. ์™ผ์ชฝ ์œ„, ์˜ค๋ฅธ์ชฝ ์œ„, ์™ผ์ชฝ ์•„๋ž˜, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ์ˆœ์œผ๋กœ ๋ฐ•์Šค๋ฅผ ์ชผ๊ฐœ๋ฉด

 (2) ๊ฐ ๋ฐ•์Šค์˜ ์ฒซ ์ˆซ์ž๋Š” 0, 16, 32, 46 ์ด๋‹ค.

 (3) ์™ผ์ชฝ ์œ„ ๋ฐ•์Šค๋Š” ๊ทธ๋Œ€๋กœ, ์˜ค๋ฅธ์ชฝ ์œ„ ๋ฐ•์Šค๋Š” ์ฒซ์ˆซ์ž์— (size//2)**2*1 ๊ฐ’์„ ๋”ํ•ด์ค€๋‹ค.

 (4) ์™ผ์ชฝ ์•„๋ž˜ ๋ฐ•์Šค๋Š” ์ฒซ์ˆซ์ž์— (size//2)**2*2 ๊ฐ’์„, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ๋ฐ•์Šค๋Š” ์ฒซ์ˆซ์ž์— (size//2)**2*3 ๊ฐ’์„ ๋”ํ•ด์ค€๋‹ค.

5. ๋ฐ•์Šค์˜ ํฌ๊ธฐ๊ฐ€ 2๊ฐ€ ๋˜๋ฉด ์ฐพ๊ณ ์ž ํ•˜๋Š” ํ–‰๊ณผ ์—ด์„ ์ฐพ์•„์„œ ํ•ด๋‹น ์ˆซ์ž๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 ( ๋ฐ•์Šค์˜ ํฌ๊ธฐ๊ฐ€ 1์ผ๋•Œ๋„ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์žฌ๊ท€ ๊นŠ์ด๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด )

 

๐Ÿ’จ ์ฒ˜์Œ์— ๋ชจ๋“ ๋ฐ•์Šค๋ฅผ ์ชผ๊ฐœ๊ณ  ์ˆซ์ž๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฑ„์›Œ๊ฐ€๋ฉด์„œ ๊ตฌํ–ˆ๋”๋‹ˆ ๋‹ต์€ ๋‚˜์˜ค์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

๊ทธ ๋‹ค์Œ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋ชจ๋“  ๋ฐ•์Šค ์ชผ๊ฐœ๊ณ  ์ ๋‹นํžˆ ์ˆซ์ž๋ฅผ ๋•Œ๋ ค๋งž์ท„์ง€๋งŒ ์‹œ๊ฐ„์ดˆ๊ณผ ๋ฐœ์ƒ.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ฐ•์Šค๋งŒ ์ฐพ์•„๋“ค์–ด๊ฐ€๊ณ  ๊ทœ์น™์„ ์•Œ์•„๋‚ด์„œ ๊ฐ’์„ ๊ตฌํ•ด์„œ ํ†ต๊ณผ - ๋‚œ์ด๋„์— ๋น„ํ•ด ๋„ˆ๋ฌด ์˜ค๋ž˜๊ฑธ๋ ธ๋‹ค...

 

๐Ÿ’ป์†Œ์Šค ์ฝ”๋“œ

def Z(row, col, size, num): # (row,col: ์ž๋ฅธ box์˜ ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค, size: box ์‚ฌ์ด์ฆˆ, num: box ์‹œ์ž‘์ ์˜ ์ˆซ์ž)
    if size == 2: # ์‚ฌ์ด์ฆˆ๊ฐ€ 2x2๊ฐ€ ๋์„ ๋•Œ
        if row == r and col == c:
            print(num)
            return
        num += 1

        if row == r and col + 1 == c:
            print(num)
            return
        num += 1

        if row + 1 == r and col == c:
            print(num)
            return
        num += 1

        if row + 1 == r and col + 1 == c:
            print(num)
            return
        num += 1

    else:
        half_size = size // 2
        # ์™ผ์ชฝ ์œ„
        if row <= r < row + half_size and col <= c < col + half_size:
            Z(row, col, half_size, num)
        # ์˜ค๋ฅธ์ชฝ ์œ„
        elif row <= r < row + half_size and col + half_size <= c < col + size:
            Z(row, col + half_size, half_size, num + (half_size ** 2) * 1)
        # ์™ผ์ชฝ ์•„๋ž˜
        elif row + half_size <= r < row + half_size * 2 and col <= c < col + half_size:
            Z(row + half_size, col, half_size, num + (half_size ** 2) * 2)
        # ์˜ค๋ฅธ์ชฝ ์•„๋ž˜
        elif row + half_size <= r < row + half_size * 2 and col + half_size <= c < col + size:
            Z(row + half_size, col + half_size, half_size, num + (half_size ** 2) * 3)


if __name__ == "__main__":
    N, r, c = map(int, input().split())
    Z(0, 0, 2 ** N, 0)
 

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: BACKJOON ONLINE JUDGE

๋งํฌ: https://www.acmicpc.net/problem/1074

 

1074๋ฒˆ: Z

ํ•œ์ˆ˜๋Š” 2์ฐจ์› ๋ฐฐ์—ด (ํ•ญ์ƒ 2^N * 2^N ํฌ๊ธฐ์ด๋‹ค)์„ Z๋ชจ์–‘์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 2*2๋ฐฐ์—ด์„ ์™ผ์ชฝ ์œ„์นธ, ์˜ค๋ฅธ์ชฝ ์œ„์นธ, ์™ผ์ชฝ ์•„๋ž˜์นธ, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜์นธ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฉ๋ฌธํ•˜๋ฉด Z๋ชจ์–‘์ด๋‹ค. ๋งŒ์•ฝ, 2์ฐจ์› ๏ฟฝ๏ฟฝ

www.acmicpc.net


๋ฌธ์ œ

ํ•œ์ˆ˜๋Š” 2์ฐจ์› ๋ฐฐ์—ด (ํ•ญ์ƒ 2^N * 2^N ํฌ๊ธฐ์ด๋‹ค)์„ Z๋ชจ์–‘์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 2*2๋ฐฐ์—ด์„ ์™ผ์ชฝ ์œ„์นธ, ์˜ค๋ฅธ์ชฝ ์œ„์นธ, ์™ผ์ชฝ ์•„๋ž˜์นธ, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜์นธ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฉ๋ฌธํ•˜๋ฉด Z๋ชจ์–‘์ด๋‹ค.

๋งŒ์•ฝ, 2์ฐจ์› ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ 2^N * 2^N๋ผ์„œ ์™ผ์ชฝ ์œ„์— ์žˆ๋Š” ์นธ์ด ํ•˜๋‚˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, ๋ฐฐ์—ด์„ 4๋“ฑ๋ถ„ ํ•œ ํ›„์— (ํฌ๊ธฐ๊ฐ€ ๊ฐ™์€ 2^(N-1)๋กœ) ์žฌ๊ท€์ ์œผ๋กœ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฉ๋ฌธํ•œ๋‹ค.

๋‹ค์Œ ์˜ˆ๋Š” 2^2 * 2^2 ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ๋ฐฉ๋ฌธํ•œ ์ˆœ์„œ์ด๋‹ค.

N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, (r, c)๋ฅผ ๋ช‡ ๋ฒˆ์งธ๋กœ ๋ฐฉ๋ฌธํ•˜๋Š”์ง€ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๋‹ค์Œ ๊ทธ๋ฆผ์€ N=3์ผ ๋•Œ์˜ ์˜ˆ์ด๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N r c๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. N์€ 15๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , r๊ณผ c๋Š” 0๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 2^N-1๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ •์ˆ˜์ด๋‹ค

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ๋ฌธ์ œ์˜ ์ •๋‹ต์„ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•