1 ๋ถ„ ์†Œ์š”

๐Ÿ“ [D3_2806] N-Queen

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class Solution{
	// ๊ฒฐ๊ณผ - ๊ฒฝ์šฐ์˜ ์ˆ˜
	static int res;

	// ๋ฐฐ์—ด
	static int[] arr;

	static int N;

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();

		int TC = Integer.parseInt(br.readLine());

		for (int T = 1; T <= TC; T++) {
			sb.append("#").append(T).append(" ");

			// ๋ณด๋“œ์˜ ํฌ๊ธฐ
			N = Integer.parseInt(br.readLine());

			// ์—ด์˜ ์œ„์น˜๊ฐ’ ์ €์žฅ ๋ฐฐ์—ด
			arr = new int[N];
			
			res = 0;
			go(0);

			sb.append(res).append("\n");
		}
		System.out.println(sb);
	}

	// ์žฌ๊ท€ - ์ˆœ์—ด
	static void go(int row) {
		// ๊ธฐ์ €์กฐ๊ฑด
		if (row == N) {
			// ์กฐ๊ฑด์— ์ถฉ์กฑํ•œ ๊ฐ’์ด ๋๊นŒ์ง€ ๋“ค์–ด์™”์œผ๋ฏ€๋กœ
			res++;
			return;
		}

		for (int i = 0; i < N; i++) { // ํ–‰ ๋Œ๋ฉด์„œ ์—ด์˜ ์œ„์น˜๊ฐ’ ์ €์žฅ, ์žฌ๊ท€ ํ˜ธ์ถœ
			arr[row] = i; // ํ–‰ ๋Œ๋ฉด์„œ ์—ด์˜ ์œ„์น˜๊ฐ’ ์ €์žฅ

			// ์กฐ๊ฑด ์ถฉ์กฑํ•˜๋ฉด ๋‹ค์Œ ์žฌ๊ท€ ํ˜ธ์ถœ
			// ๊ฐ€์ง€์น˜๊ธฐ ์กฐ๊ฑด
			if (check(row)) {
				go(row + 1);
			}
		}

	}
	
	// ์กฐ๊ฑด ๋ฉ”์„œ๋“œ
	static boolean check(int row) {
		for(int i=0; i<row; i++) {
			// ๊ฐ™์€ ์—ด์— ์œ„์น˜
			if(arr[row] == arr[i]) {
				return false;
			}
			
			// ๋Œ€๊ฐ์„ ์— ์œ„์น˜
			if(row-i == Math.abs(arr[row] - arr[i])) {
				return false;
			}
			
			// ๊ฐ™์€ ํ–‰์— ์œ„์น˜
			if(row == i) {
				return false;
			}
		}
		return true;
	}
}

๐Ÿค” ๋‚˜์˜ ์ƒ๊ฐ

๋ฐฑํŠธ๋ž˜ํ‚น์„ ์—ฐ์Šตํ•ด ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค.
ํŠน์ด์ ์€ ํ–‰๊ณผ์—ด์„ ์ด์ฐจ์› ๋ฐฐ์—ด๋กœ ๋ฐ›์ง€ ์•Š๊ณ  ํ•˜๋‚˜์˜ ์ผ์ฐจ๋ฐฐ์—ด์— ์—ด์˜ ์œ„์น˜๊ฐ’์„ ๋„ฃ์—ˆ๋‹ค.
ํ•œ๋งˆ๋””๋กœ for๋ฌธ์˜ ๋ณ€์ˆ˜๋Š” ํ–‰์ด ๋˜๊ณ  ๋ฐฐ์—ด ๊ฐ’์€ ์—ด์ด ๋˜๋Š” ์›๋ฆฌ์ด๋‹ค.
์ดํ•ด๊ฐ€ ๋˜๋ฉด ์‰ฝ๋‹ค ์ƒ๊ฐํ•˜๊ฒ ์ง€๋งŒ ์ž˜ ์•ˆ๋˜์—ˆ์„๋• ๊ทธ๋ƒฅ ์ด์ฐจ์›๋ฐฐ์—ด์„ ์จ๋„ ๊ดœ์ฐฎ์„ ๊ฒƒ ๊ฐ™๋‹ค.
๋ฌผ๋ก  ๊ณต๊ฐ„๋ณต์žก๋„์™€ ์‹œ๊ฐ„๋ณต์žก๋„์—์„œ๋Š” ์ฐจ์ด๊ฐ€ ์žˆ๊ฒ ์ง€๋งŒ.. N์ด ๊ทธ๋ ‡๊ฒŒ ํฌ์ง€ ์•Š๋‹ค๋ฉด ํฌ๊ฒŒ ์ฐจ์ด๋Š” ๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.
์ ์  ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด ํ’€์ˆ˜๋ก ์‹œ๊ฐ„ ๋ณต์žก๋„์™€ ๊ณต๊ฐ„ ๋ณต์žก๋„์˜ ์ค‘์š”์„ฑ์— ๋Œ€ํ•ด ๋Š๋ผ๊ฒŒ ๋œ๋‹ค !!