[๋ฐฑ์ค€] N-Queen

๊ฐœ๋ฐœ์ž P๊ตฐยท2026๋…„ 1์›” 13์ผ

๋ฐฑ์ค€

๋ชฉ๋ก ๋ณด๊ธฐ
53/57
post-thumbnail

๐Ÿ”— ๋ฌธ์ œ ๋ณด๊ธฐ - [๋ฐฑ์ค€] N-Queen

๐Ÿ“– ๋ฌธ์ œ

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

N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ํ€ธ์„ ๋†“๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

โœ ์ž…๋ ฅ

์ฒซ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค N < 15)

๐Ÿ“„ ์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ํ€ธ N๊ฐœ๋ฅผ ์„œ๋กœ ๊ณต๊ฒฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋†“๋Š”ย ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

โœ… ์ฝ”๋“œ

import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStreamReader;  
  
public class Main {  
    static int[] board;  
    static int count;  
    static int n;  
  
    public static void main(String[] args) throws IOException {  
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  
        n = Integer.parseInt(br.readLine());  
        board = new int[n];  
        nQueen(0);  
        System.out.println(count);  
    }  
  
    public static void nQueen(int col) {  
        if (col == n) {  
            count++;  
            return;  
        }  
  
        for (int i = 0; i < n; i++) {  
            board[col] = i;  
            if (check(col)) {  
                nQueen(col + 1);  
            }  
        }  
    }  
  
	// ๋ฐฑํŠธ๋ž˜ํ‚น ๋ฉ”์†Œ๋“œ
    public static boolean check(int row) {
        for (int i = 0; i < row; i++) {  
            if (board[i] == board[row]) {   // ๊ฐ™์€ ํ–‰์ผ ๋•Œ false
	            return false;
            }  
  
            if (Math.abs(row - i) == Math.abs(board[row] - board[i])) {   // ๋Œ€๊ฐ์„ ์ผ ๋•Œ false
	            return false;
            }  
        }  
  
        return true;  
    }  
}
profile
๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ํ•ด๊ฒฐํ•˜๋Š” ๊ณผ์ •์„ ํ†ตํ•ด ์–ป์€ ์ƒˆ๋กœ์šด ์ง€์‹์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€