ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [๋ฐฑ์ค€] 9663 N-Queen with Python
    PS 2022. 2. 14. 18:53
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ BOJ 9663 N-Queen

    ๐Ÿ’ก ์กฐ๊ฑด

    1. N-Queen ๋ฌธ์ œ๋Š” ํฌ๊ธฐ๊ฐ€ N ร— N์ธ ์ฒด์ŠคํŒ ์œ„์— ํ€ธ N๊ฐœ๋ฅผ ์„œ๋กœ ๊ณต๊ฒฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋†“๋Š” ๋ฌธ์ œ.

    2. 1 <= N < 15

    3. ๋ธŒ๋ฃจํŠธํฌ์Šค, ๋ฐฑํŠธ๋ž˜ํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜์œ ํ˜•์˜ ๋ฌธ์ œ

    ๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

    from sys import stdin
    
    a, b, c = [False for _ in range(15)], [False for _ in range(30)], [False for _ in range(30)]
    n = int(stdin.readline())
    res = 0
    
    
    def dfs(x):
        global res
        if x == n:
            res += 1
            return
    
        for y in range(n):
            if a[y] or b[x + y] or c[x + (n - y)]:
                continue
    
            a[y] = True
            b[x + y] = True
            c[x + (n - y)] = True
    
            dfs(x + 1)
    
            a[y] = False
            b[x + y] = False
            c[x + (n - y)] = False
    
    
    dfs(0)
    print(res)
    

    ๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

    ์˜ˆ์ œ

    8

    ์‹คํ–‰๊ฒฐ๊ณผ

    92

    โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

    1. ํ€ธ์€ ๊ฐ ์ค„๋งˆ๋‹ค ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์”ฉ ๋“ค์–ด๊ฐ€์•ผํ•œ๋‹ค.

    2. ํ€ธ์ด ์žˆ๋Š” ์ž๋ฆฌ ๊ธฐ์ค€์œผ๋กœ ๋Œ€๊ฐ์„ , ์„ธ๋กœ์„ ์—๋Š” ๋‹ค๋ฅธ ํ€ธ์ด ์กด์žฌํ•  ์ˆ˜ ์—†๋‹ค.

    3. ํ€ธ์˜ ์ขŒํ‘œ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ํ™•์ธํ•˜๋ฉด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๊ณ  ํ•˜๋ฉด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚œ๋‹ค.

    4. dfs ํ•จ์ˆ˜์—์„œ ํ€ธ์„ ๋†“์€ ๊ฐœ์ˆ˜๊ฐ€ n๊ฐœ๊ฐ€ ๋˜์—ˆ์œผ๋ฉด res + 1 ํ›„ returnํ•œ๋‹ค.

    5. (2)๋ฒˆ์˜ ๊ธฐ์ค€์— ๋”ฐ๋ผ, a๋Š” ์„ธ๋กœ์ค„, b, c๋Š” ๋Œ€๊ฐ์„ ์„ ์ฒดํฌํ•ด์ฃผ๋Š” ๋ฆฌ์ŠคํŠธ์ด๋‹ค.
      n์˜ ๊ธธ์ด๋งŒํผ ์ˆœํšŒํ•˜๋ฉด์„œ a, b, c ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ํ•˜๋‚˜๋ผ๋„ True ์ผ ๊ฒฝ์šฐ

      ํ€ธ์„ ๋†“์ง€ ๋ชปํ•˜๋Š” ์ž๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— continue
      a, b, c ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ๋ชจ๋‘ False ์ธ ๊ฒฝ์šฐ, ๋ชจ๋‘ True ๋กœ ๊ฐฑ์‹ ํ•œ ๋’ค dfs(x + 1) ์žฌ๊ท€ํ˜ธ์ถœ

    6. ๋น ์ ธ๋‚˜์˜จ ํ›„์—๋Š” ๋ฐฑํŠธ๋ž˜ํ‚น์„ ์œ„ํ•ด a, b, c ๋ฆฌ์ŠคํŠธ์˜ ์ธ๋ฑ์Šค์— ํ•ด๋‹นํ•˜๋Š” ๋ถ€๋ถ€์„ False๋กœ ๊ฐฑ์‹ 

    ๐Ÿ’พ ๋Š๋‚€์ 

    1. ๋ฐฑํŠธ๋ž˜ํ‚น์˜ ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ œ๋ผ๊ณ  ํ•˜์ง€๋งŒ, ๋Œ€ํ‘œ์ ์œผ๋กœ ์–ด๋ ค์šด ๋ฌธ์ œ๋ผ๊ณ  ํ•˜๋Š”๊ฒŒ ๋งž๋Š” ๊ฒƒ ๊ฐ™๋‹ค.
    2. ๋Œ€๊ฐ์„ ๊ณผ ์„ธ๋กœ์˜ ๊ฐ ์ขŒํ‘œ๋ฅผ ์ผ์ผํžˆ ๊ฒ€์‚ฌํ•˜๋ ค๊ณ  ํ•ด์„œ ์‹œ๊ฐ„์ดˆ๊ณผ๋ฅผ ํ”ผํ•˜์ง€ ๋ชปํ–ˆ๋‹ค.
    3. ํ’€์ด๋ฅผ ๋ณด๊ณ  ์ผ์ฐจ์› ๋ฆฌ์ŠคํŠธ๋ฅผ ์„ธ ๊ฐœ ๋งŒ๋“ค์–ด ๊ฒ€์‚ฌํ•˜๋Š” ๊ฒƒ์„ ๋ณด๊ณ , ๋†€๋ž๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค.
    4. ๋ฌธ์ œ๋ฅผ ํฌ์ŠคํŒ…ํ•˜๋ฉด์„œ ๋‹ค์‹œ ํ•œ ๋ฒˆ ํ’€์ด๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋Š” ๊ฒƒ์ด ํฐ ๋„์›€์ด ๋˜์—ˆ๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.