[๋ฐฑ์ค€] 1074 Z (python ํŒŒ์ด์ฌ)

2022. 6. 26. 19:24ยท๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]

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

 

1074๋ฒˆ: Z

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

www.acmicpc.net

ZZZ


์•„์ด๋””์–ด

1. ์ˆซ์ž๋ฅผ ์–ด๋–ป๊ฒŒ ์ฐพ์ง€

  • ์ฒ˜์Œ์—๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด๋ณด๋ ค ํ–ˆ์œผ๋‚˜ ์ตœ๋Œ€๊ธธ์ด๊ฐ€ 2^15์ธ๊ฑธ ๋ณด๊ณ  ์ ‘์—ˆ๋‹ค.
  • ๋ถ„ํ•  ํƒ์ƒ‰๊ฐ™์ด ์ƒ๊ฒผ์ง€๋งŒ ํ˜น์‹œ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์„๊นŒ ๋ด ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ๊ทธ๋ƒฅ ๋ถ„ํ•  ์ •๋ณต์œผ๋กœ ํ’€๊ธฐ๋กœ ํ–ˆ๋‹ค.

2. ๊ทœ์น™์„ ์ฐพ์•„์•ผ ํ•ด

  • ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด 4๋“ฑ๋ถ„ ํ–ˆ์„ ๋•Œ ๋А๋‚Œ์ด ์˜จ๋‹ค.
  • 4๋“ฑ๋ถ„ ํ–ˆ์„๋•Œ ๊ฐ๊ฐ์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๊ฐ€ ์ผ์ •ํ•œ ๊ทœ์น™์ด ์žˆ๋‹ค๋Š” ๊ฒŒ ๋ณด์ธ๋‹ค.
  • ์˜ˆ๋ฅผ ๋“ค์–ด N = 3์œผ๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ 0 16 32 48์ด๋‹ค. ์ด๊ฒƒ์„ ๋‹ค๋ฅด๊ฒŒ ํ‘œํ˜„ํ•˜๋ฉด 16 * 0, 16 * 1, 16 * 2, 16 * 3
  • N์œผ๋กœ ํ‘œํ˜„ํ•˜์ž๋ฉด (2^(N//2)) * 0, (2^(N//2)) * 1, (2^(N//2)) * 2, (2^(N//2)) * 3
  • ์ด ๋ฐฉ์‹์œผ๋กœ ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉ์‹œํ‚ค๋ฉด ๋œ๋‹ค.
  • ๋งˆ์ง€๋ง‰์œผ๋กœ 2*2 ๋ฐฐ์—ด์ด ๋˜์—ˆ์„ ๋•Œ ๊ฐ ์œ„์น˜์— ๋งž๊ฒŒ +0, +1, +2, +3์„ ํ•ด์„œ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 


์ฝ”๋“œ ์„ค๋ช…

def dfs(row, col, n, value):
    n = n // 2

    if row < n and col < n:
        if n == 1:
            print(value)
            exit(0)
        dfs(row, col, n, value)

    elif row < n and col >= n:
        if n == 1:
            print(value + 1)
            exit(0)
        dfs(row, col - n, n, value + n ** 2)

    elif row >= n and col < n:
        if n == 1:
            print(value + 2)
            exit(0)
        dfs(row - n, col, n, value + n ** 2 * 2)

    elif row >= n and col >= n:
        if n == 1:
            print(value + 3)
            exit(0)
        dfs(row - n, col - n, n, value + n ** 2 * 3)

dfs(r,c,size,0)

๋ถ„ํ•  ์ •๋ณต ๋ฌธ์ œ๋ฅผ ์ฝ”๋“œ๋กœ ๋ณด๋ฉด ๋ฐ”๋กœ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๋‹ค. ๋น„์Šทํ•œ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋Š” ๊ฒƒ์ด ๋„์›€๋œ๋‹ค.

 

๋จผ์ € ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ์šฐ๋ฆฌ๊ฐ€ ์ฐพ๋Š” ์œ„์น˜(r, c)๊ฐ€ ์ฃผ์–ด์ง€๊ณ  ๋ฐฐ์—ด์˜ ๊ธธ์ด(2**N)์™€ 0(์šฐ๋ฆฌ๊ฐ€ ๊ตฌํ•˜๋Š” ๊ฐ’)์„ ๋ฐ›์•„์ค€๋‹ค.

 

ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๊ฐ€์žฅ๋จผ์ € ๋ฐฐ์—ด ๊ธธ์ด๋ฅผ ๋ฐ˜์œผ๋กœ ์ž๋ฅธ๋‹ค. ์ดํ›„ r, c์˜ ๊ฐ’์— ๋”ฐ๋ผ ์–ด๋”” ์‚ฌ๋ถ„๋ฉด์œผ๋กœ ๋“ค์–ด๊ฐˆ์ง€ if๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ฒดํฌํ•ด์ค€๋‹ค.

 

์ดํ›„ ๋‹ค์‹œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ์ฃผ๋ฉด ๋˜๋Š”๋ฐ ์—ฌ๊ธฐ์„œ ์ธ์ž๋กœ ๋ฐ›๋Š” ๊ฐ’์„ ์„ค๋ช…ํ•˜์ž๋ฉด

๋จผ์ € r, c๋Š” ๋“ค์–ด๊ฐ„ ์‚ฌ๋ถ„๋ฉด์—๋”ฐ๋ผ ์ขŒํ‘œ ์กฐ์ •์„ ํ•ด์ค€๋‹ค. ์œ„์น˜๋ฅผ ํ•ญ์ƒ ์ƒ๋Œ€์ ์œผ๋กœ ์ƒ๊ฐํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ถœ์ฒ˜:&nbsp;https://www.acmicpc.net/problem/1074

์œ„ ์‚ฌ์ง„์— 12๋ฅผ ๋ณด๋ฉด. ์ฒ˜์Œ 4 by 4 ๊ธฐ์ค€์œผ๋กœ๋Š” 4 ์‚ฌ๋ถ„๋ฉด์— ์†ํ•ด์žˆ์ง€๋งŒ, ๋“ค์–ด๊ฐ€์„œ 2 by 2 ๊ธฐ์ค€์œผ๋กœ ๋ณด๋ฉด 1 ์‚ฌ๋ถ„๋ฉด์— ์†ํ•ด์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ์ขŒํ‘œ์กฐ์ •์„ ํ•ด์ค€๋‹ค.

 

๋‹ค์Œ์œผ๋กœ value๊ฐ’์€ ์œ„์— ์„ค๋ช…ํ•œ ๊ทœ์น™๋Œ€๋กœ ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ 2 by 2 ์—์„œ ์–ด๋А ์‚ฌ๋ถ„๋ฉด์— ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜๊ณ  ์œ„์น˜์— ๋งž๊ฒŒ ๊ฐ’(0, 1, 2, 3)์„ ๋”ํ•ด ์ถœ๋ ฅํ•ด์ฃผ๊ณ  exit(0)๋ฅผ ์‚ฌ์šฉํ•ด ์ข…๋ฃŒํ•ด์ค€๋‹ค. 


์ „์ฒด ์ฝ”๋“œ

import sys
sys.setrecursionlimit(10**3)

N, r, c = map(int,input().split())
size = 2**N

def dfs(row, col, n, value):
    n = n // 2

    if row < n and col < n:
        if n == 1:
            print(value)
            exit(0)
        dfs(row, col, n, value)

    elif row < n and col >= n:
        if n == 1:
            print(value + 1)
            exit(0)
        dfs(row, col - n, n, value + n ** 2)

    elif row >= n and col < n:
        if n == 1:
            print(value + 2)
            exit(0)
        dfs(row - n, col, n, value + n ** 2 * 2)

    elif row >= n and col >= n:
        if n == 1:
            print(value + 3)
            exit(0)
        dfs(row - n, col - n, n, value + n ** 2 * 3)

dfs(r,c,size,0)

python 3 ๋กœ ์ฑ„์ ํ•ด๋„ ์ž˜ ๋œ๋‹ค.

 

 

'๐Ÿงฉ Problem Solving > [๋ฐฑ์ค€]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€] 5525 IOIOI (python ํŒŒ์ด์ฌ)  (0) 2022.07.03
[๋ฐฑ์ค€] 9375 ํŒจ์…˜์™• ์‹ ํ•ด๋นˆ (python ํŒŒ์ด์ฌ)  (0) 2022.06.29
[๋ฐฑ์ค€] 9019 DSLR (python ํŒŒ์ด์ฌ)  (0) 2022.06.26
[๋ฐฑ์ค€] 14500 ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ (python ํŒŒ์ด์ฌ)  (0) 2022.06.23
[๋ฐฑ์ค€] 18111 ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ (python ํŒŒ์ด์ฌ)  (4) 2022.06.23
'๐Ÿงฉ Problem Solving/[๋ฐฑ์ค€]' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [๋ฐฑ์ค€] 5525 IOIOI (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 9375 ํŒจ์…˜์™• ์‹ ํ•ด๋นˆ (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 9019 DSLR (python ํŒŒ์ด์ฌ)
  • [๋ฐฑ์ค€] 14500 ํ…ŒํŠธ๋กœ๋ฏธ๋…ธ (python ํŒŒ์ด์ฌ)
์ œ๋ด‰์•„
์ œ๋ด‰์•„
  • ์ œ๋ด‰์•„
    Overthinking
    ์ œ๋ด‰์•„
    fake it till you make it.
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (105)
      • ๐Ÿงฉ Problem Solving (83)
        • [๋ฐฑ์ค€] (74)
        • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] (7)
        • [SW Expert Academy] (1)
        • [์•Œ๊ณ ๋ฆฌ์ฆ˜ for PS] (1)
      • ๐Ÿ“ฆ Data Structure (2)
      • ๐Ÿ“œ Language (14)
        • [python] (14)
      • ๐Ÿ–ค Git (1)
      • ๐ŸŒ† ์ผ์ƒ (3)
        • ๐Ÿ’ฌ ๋ฒฝ๋ณด๊ณ  ๋งํ•˜๊ธฐ (3)
      • ๐Ÿ—„๏ธ ๊ธฐํƒ€ (2)
      • ๐Ÿ”ต css (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    ๋ธŒ๋ฃจํŠธํฌ์Šค
    ๋‹ค์ต์ŠคํŠธ๋ผ
    ๊ทธ๋ฆฌ๋””
    ์Šคํƒ
    ๋ฐฑํŠธ๋ž˜ํ‚น
    imos
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ๋ถ„ํ•  ์ •๋ณต
    DFS
    Bruteforce
    ๋ฐฑ์ค€
    slicing
    ๋ƒ…์ƒ‰
    ํ”Œ๋กœ์ด๋“œ ์™€์ƒฌ
    ๋ˆ„์ ํ•ฉ
    ํ”Œ๋กœ์ด๋“œ์›Œ์…œ
    ํŒฐ๋ฆฐ๋“œ๋กฌ
    Python
    ํˆฌํฌ์ธํ„ฐ
    SWEA
    ์œ„์ƒ์ •๋ ฌ
    ํŒŒ์ด์ฌ
    ๋ถ€๋ถ„ํ•ฉ
    ์žฌ๊ท€
    DP
    BFS
    boj
    ์ •์ฒ˜๊ธฐ
    ๋ฐ๋ธŒ์ฝ”์Šค
    ๊ตฌํ˜„
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
์ œ๋ด‰์•„
[๋ฐฑ์ค€] 1074 Z (python ํŒŒ์ด์ฌ)
์ƒ๋‹จ์œผ๋กœ

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