๋ฐ˜์‘ํ˜•
JuneBee
JuneBee
JuneBee
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (103)
    • ๐Ÿ‘” JOB (10)
      • ์ „ํ˜• ํ›„๊ธฐ (10)
    • ๐ŸŽฎ GAME (9)
      • ์ ค๋‹ค | ์™•๊ตญ์˜ ๋ˆˆ๋ฌผ ๊ฒŒ์ž„ ์ผ๊ธฐ (9)
    • ๐Ÿ““ STUDY (60)
      • JAVA (15)
      • TIL (2)
      • FASTCAMPUS (32)
      • ํ™˜๊ฒฝ์„ค์ • (2)
      • YOCTO (1)
      • OS (4)
      • ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ ์ธ ์•ก์…˜ (2)
    • ๐ŸŽงDAILY (6)
    • ๐Ÿ‡ฉ๐Ÿ‡ช GERMAN (18)
      • ๋Œ€ํ•™์› ์ง€์› (3)
      • ์ง€์› ํ›„๊ธฐ (11)
      • ๋…์ผ์–ด ์‹œํ—˜ (4)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ์ผ์ƒ

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

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • ์ž๋ฃŒ๊ตฌ์กฐ
  • ํŒจ์บ ์ฑŒ๋ฆฐ์ง€
  • ํŒจ์ŠคํŠธ์บ ํผ์Šคํ›„๊ธฐ
  • ์„์‚ฌ
  • ํฌ๋ฃจ์Šค์นผ
  • ์ง์žฅ์ธ์ธ๊ฐ•
  • ๋…์ผ์œ ํ•™
  • telc
  • ๊ฒŒ์ž„์ผ๊ธฐ
  • ์‹ธํ”ผ
  • ์™•๊ตญ์˜๋ˆˆ๋ฌผ
  • ์œ ํ•™
  • ์ •๋ ฌ
  • B1
  • ์™•๋ˆˆ
  • Java
  • SSAFY
  • ๋ฐฑํŠธ๋ž˜ํ‚น
  • bruteforce
  • ํ”Œ๋ ˆ์ด์ผ๊ธฐ
  • ๋…์ผ
  • ํŒจ์ŠคํŠธ์บ ํผ์Šค
  • ๋…์ผ์–ด
  • ํ•œ๋ฒˆ์—๋๋‚ด๋Š”์ฝ”๋”ฉํ…Œ์ŠคํŠธ369JavaํŽธ์ดˆ๊ฒฉ์ฐจํŒจํ‚ค์ง€Online.
  • ๋ชจํ—˜์ผ๊ธฐ
  • sort
  • ์ ค๋‹ค
  • C/C++
  • ์ง์žฅ์ธ์ž๊ธฐ๊ณ„๋ฐœ
  • ์ทจ์—…์ค€๋น„

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
JuneBee

JuneBee

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 8์ผ์ฐจ
๐Ÿ““ STUDY/FASTCAMPUS

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 8์ผ์ฐจ

2021. 11. 8. 22:06
728x90
๋ฐ˜์‘ํ˜•

๋‚ ์งœ : 2021 ๋…„ 11 ์›” 8 ์ผ
์‹œ์ฒญ ๊ฐ•์˜ : ๋ฐฑํŠธ๋ž˜ํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ดํ•ด (1)

๋ฒŒ์จ 8์ผ์ฐจ๋ผ๋‹ˆ..์‹ ๊ธฐํ•˜๋‹ค..

์˜ค๋Š˜์€ ๋ฐฑํŠธ๋ž˜ํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜์ดํ•ด (1)์„ ๋“ค์—ˆ๋‹ค. ํฌ์ŠคํŒ… ์ž‘์„ฑ ํ›„, N ํ€ธ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๊ณ  ๋ฐฑํŠธ๋ž˜ํ‚น ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ดํ•ด (2)๋ฅผ ๋“ฃ๋Š”๊ฒŒ ๋‚˜์„ ๊ฒƒ ๊ฐ™๋‹ค.

์• ๋‹ˆ์›จ์ด..

 

๋ฐฑํŠธ๋ž˜ํ‚น

์ œ์•ฝ ์กฐ๊ฑด ๋งŒ์กฑ ๋ฌธ์ œ์—์„œ ํ•ด๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•œ ์ „๋žต
ํ•ด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ํ›„๋ณด๊ทผ์„ ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ํ‘œํ˜„ (State Space Tree)
์ง„์งœ ํŠธ๋ฆฌ๋Š” ์•„๋‹ˆ๊ณ , dfs ๋กœ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

 

How it works...

1. ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ํ•˜๋‚˜ ์žก์•„์„œ, ํ•ด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ํŒ๋‹จ

2. ํ•ด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ํ•ด์˜ child ๊ฐ€ ํ•ด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š”์ง€ ํŒ๋‹จ

3. ํ•ด๊ฐ€ ๋  ์ˆ˜ ์—†๋‹ค๋ฉด, ๋‹ค์‹œ ๊ทธ ์ „ ์กฐ๊ฑด์œผ๋กœ ๋Œ์•„๊ฐ„๋‹ค.

์ด๋•Œ, ํ•ด๊ฐ€ ๋  ์ˆ˜ ์—†๋Š” ๋…ธ๋“œ์˜ ์ž์‹๋“ค์€ ํ™•์ธํ•ด๋ณด์ง€ ์•Š์•„๋„ ํ•ด๊ฐ€ ๋  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น ๊ฐ€์ง€๋“ค์€ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง€๋Š”๋ฐ ์ด๋ฅผ ๊ฐ€์ง€์น˜๊ธฐ๋ผ๊ณ  ํ•œ๋‹ค.

4. ์œ„ ๊ณผ์ •์„ ์ตœ์ข… ํ•ด๋ฅผ ์ฐพ์„ ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณต

 

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : ResearchGate

 

๋Œ€ํ‘œ ๋ฌธ์ œ : N Queen

์ด๋ฏธ์ง€ ์ถœ์ฒ˜ : codesdope

N-Queen ๋ฌธ์ œ๋Š” ๋ฐฑ ํŠธ๋ž˜ํ‚น ์ „๋žต์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ ๋ฌธ์ œ์ด๋‹ค.

NxN ์ฒด์ŠคํŒ์— N ๊ฐœ์˜ ํ€ธ์„ ๋†“์•˜์„ ๋•Œ ์„œ๋กœ ๊ณต๊ฒฉํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ๋Š” ๋ฌธ์ œ์ด๋‹ค.

์ œ์•ฝ ์กฐ๊ฑด : ํ€ธ์€ ๋Œ€๊ฐ์„ , ์ˆ˜ํ‰, ์ˆ˜์ง์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

Approach : 

๋ฐฑ ํŠธ๋ž˜ํ‚น์œผ๋กœ ํ•ด๋‹น ์ œ์•ฝ ์กฐ๊ฑด๋“ค์„ ๊ฐ€์ง€์น˜๊ธฐ ํ•˜๋ฉด์„œ ์ ‘๊ทผํ•œ๋‹ค.

์ˆ˜ํ‰์œผ๋กœ ์ด๋™ ํ•  ์ˆ˜ ์žˆ์Œ : ํ•œ row์— ํ•œ๊ฐœ์˜ ํ€ธ๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งจ์œ„์— ํ€ธ์„ ๋ฐฐ์น˜ํ•˜๊ณ  ํ•ด๋‹น ํ€ธ์ด ์ด๋™ํ•  ์ˆ˜ ์—†๋Š” ์œ„์น˜์— ๋‹ค์Œ ํ€ธ์„ ๋ฐฐ์น˜ํ•˜๋ฉด ๋œ๋‹ค. ๋งŒ์•ฝ ํ€ธ์„ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, ๊ทธ ์ „๋‹จ๊ณ„๋กœ ๋Œ์•„๊ฐ€์„œ ์žฌ๋ฐฐ์น˜ํ•œ๋‹ค

 

 

์กฐ๊ฑด ์ฒดํฌ

1. ์ˆ˜์ง ์ฒดํฌ

ํ€ธ์˜ ์ขŒํ‘œ๊ฐ€ (1,2) ๋ผ๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์ด ํ€ธ์€ ๋ชจ๋“  (x,2)๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฆ‰, ํ•ด๋‹น column (y์ขŒํ‘œ) ์—๋Š” ๋”์ด์ƒ ํ€ธ์„ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์—†๋‹ค! ํ•œ column์—๋Š” ํ•˜๋‚˜์˜ ํ€ธ๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2. ์ˆ˜ํ‰ ์ฒดํฌ

ํ€ธ์€ ์ˆ˜ํ‰์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ํ•œ row์—๋Š” ํ•˜๋‚˜์˜ ํ€ธ๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3. ๋Œ€๊ฐ์„  ์ฒดํฌ

์˜†์— ์กฐ์žกํ•˜๊ฒŒ ๊ทธ๋ฆผ์„ ๊ทธ๋ ค๋ดค๋Š”๋ฐ, ํ€ธ์˜ ๋Œ€๊ฐ์„  ์œ„์น˜์— ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์˜†๊ณผ ๊ฐ™์ด ์ด๋“ฑ๋ณ€ ์‚ผ๊ฐํ˜•์ด ๊ทธ๋ ค์งˆ ์ˆ˜ ์žˆ๋Š” ์œ„์น˜์— ํ€ธ์ด ๋ฐฐ์น˜๋œ๋‹ค.

 

์ฆ‰, |๋ฐฐ์น˜๋  ํ€ธ์˜ x ์ขŒํ‘œ - ํ˜„์žฌ ํ€ธ์˜ x ์ขŒํ‘œ| == |๋ฐฐ์น˜๋  ํ€ธ์˜ y ์ขŒํ‘œ - ํ˜„์žฌ ํ€ธ์˜ y ์ขŒํ‘œ| ์ผ๋•Œ ์ด ํ€ธ๋“ค์€ ๋Œ€๊ฐ์„ ์ƒ์— ์žˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

๋”ฐ๋ผ์„œ, ์ด๋ฅผ ์ˆ˜๋„ ์ฝ”๋“œ๋กœ ๊ตฌํ˜„ํ•ด๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์กฐ๊ฑด์‹์„ ๋„์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

 

if ( abs(queen.col - curr_queen.col) == abs(queen.row - curr_queen.col) ) continue; //๋Œ€๊ฐ์„ ์ƒ
else {
	//other code
}

์œ„์— ์ œ์‹œ๋œ ์กฐ๊ฑด๋“ค๋กœ ๊ฐ€์ง€์น˜๊ธฐ๋ฅผ ํ•˜๊ณ  dfs ๋ฐฉ์‹์œผ๋กœ ํ’€์–ด๋ณธ๋‹ค๋ฉด n ํ€ธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๋ฐฑ์ค€ 9663 N-Queen

๋ฐฑ์ค€ ๋ฌธ์ œ๋ฅผ ํ’€๊ณ  ์™”๋‹ค..

2์ฐจ์› ๋ฐฐ์—ด๋กœ ํ’€ ์ˆ˜ ์žˆ์„ ์ค„ ์•Œ์•˜๋Š”๋ฐ ์ƒ๊ฐ์ฒ˜๋Ÿผ ์ž˜ ์•ˆ๋๋‹ค. ๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ์•„๋‹ˆ ์ด๋Ÿด์ˆ˜๊ฐ€..๋‹ค๋“ค 1์ฐจ์› ๋ฐฐ์—ด๋กœ ํ•ด๊ฒฐํ•˜๋‹ค๋‹ˆ ์ด๋ž˜์„œ ์–ด๋ฆด๋•Œ ์‹ฑํฌ๋น…์„ ํ–ˆ์–ด์•ผ..

1 ์ฐจ์› ๋ฐฐ์—ด๋กœ ํ‘œํ˜„

//1์ฐจ์› ๋ฐฐ์—ด
int[] board = new int[N];

1์ฐจ์› ๋ฐฐ์—ด๋กœ ์–ด๋–ป๊ฒŒ ํ‘œํ˜„ํ•˜๋ƒ ํ•˜๋ฉด, ๊ฐ ์ธ๋ฑ์Šค๊ฐ€ row ๋กœ ์น˜๋Š”๊ฑฐ๋‹ค.

์•ž์„œ ๋งํ–ˆ๋“ฏ์ด, N queen์˜ ์ œ์•ฝ ์กฐ๊ฑด์—์„œ ํ•œ row์— ํ•˜๋‚˜์˜ ํ€ธ๋งŒ ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋งํ•˜์ž๋ฉด ๋ชจ๋“  row์—๋Š” ํ•˜๋‚˜์˜ ํ€ธ์ด ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— 1์ฐจ์› ๋ฐฐ์—ด๋กœ ํ‘œํ˜„ํ•˜๋ฉด index๊ฐ€ ํ€ธ์˜ row๊ณ , ๋‚ด์šฉ๋ฌผ์ด column์˜ ์œ„์น˜๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๊ฒ ๋‹ค.

index (row) 0 1 2 3 4 5 6
column y0 y1 y2 y3 y4 y5 y6

์œ„ ํ…Œ์ด๋ธ”์„ ๋ณด๋ฉด ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด, board[2] = 3์ด๋ผ๋ฉด, x = 2, y = 3 ์ธ (2,3) ์— ํ€ธ์ด ์กด์žฌํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์†Œ๋ฆฌ๋‹ค!

DFS

private static void dfs(int row) {
	if(row == N) {//๋๊นŒ์ง€ ๋„์ฐฉ
		answer++;
		return;
	}
	for(int i = 0 ; i<N ;i ++) {
		board[row] = i; //row ๊ฐ€ 1์ด๋ผ๋ฉด, ํ€ธ์„ i ๋ฒˆ์งธ column์— ์œ„์น˜์‹œ์ผœ๋ณด๊ณ  ๋‘˜ ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํŒ๋‹จ
		if(check(row)) {//ํ•ด๋‹น row์— ๋†“์€ col ์ •๋ณด๊ฐ€ ๊ดœ์ฐฎ์€๊ฐ€..
			dfs(row+1); //๋‹ค์Œ row์— ๋†“์Œ
		}
		//else : ๋‹ค์‹œ col ์„ ์ •ํ›„ ๋ฐ˜๋ณต
	}
}

์œ„ ์ฝ”๋“œ๋Š” dfs์ฝ”๋“œ์ด๋‹ค.

๋จผ์ €, for loop๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, column ์œ„์น˜๋ฅผ ์ •ํ•œ๋‹ค

for(int i = 0 ; i<N ;i ++){
	board[row]=i;
}

์œ„ ์ฝ”๋“œ๊ฐ€ column์„ ์„ค์ •ํ•˜๊ฒŒ ํ•ด์ค€๋‹ค.

if(check(row)) {//ํ•ด๋‹น row์— ๋†“์€ col ์ •๋ณด๊ฐ€ ๊ดœ์ฐฎ์€๊ฐ€..
	dfs(row+1); //๋‹ค์Œ row์— ๋†“์Œ
}

์œ„ ์ฝ”๋“œ๋Š”, ํ•ด๋‹น row์— ๋ฐฉ๊ธˆ ๋Œ€์ž…ํ•œ column๊ฐ’์ด ๊ดœ์ฐฎ์€์ง€ ์•„๋‹Œ์ง€ ํ™•์ธํ•˜๋Š” ๋ฉ”์„œ๋“œ๋กœ ํ˜ธ์ถœํ•œ ํ›„ ๋งŒ์ผ ๊ดœ์ฐฎ๋‹ค๋ฉด ๋‹ค์Œ row๋กœ ๋„˜์–ด๊ฐ€๋Š” ์ฝ”๋“œ์ด๋‹ค.

์ฆ‰, (0,0) ์ด validation check์—์„œ ํŒจ์Šคํ–ˆ๋‹ค๋ฉด, ๋‹ค์Œ (1,y) ์ขŒํ‘œ๋ฅผ ๊ตฌํ•  ๊ฒƒ์ด๋‹ค.

์ฐธ๊ณ ๋กœ, check method๋Š” ์•ž์„œ ๋งํ•œ ๋Œ€๊ฐ์„ ๊ณผ column์„ ํ™•์ธํ•˜๋Š” ์ž‘์—…์„ ํ•œ๋‹ค.

private static boolean check(int row) {
	for(int i = 0 ; i< row ;i ++) {
		if(board[i] == board[row])return false;
		//๋Œ€๊ฐ์„  :row, col
		if(Math.abs(i-row)== Math.abs(board[row]-board[i])) return false;
	}
	return true;
}

if(board[i] == board[row]) ๋Š” ํ•ด๋‹น ์—ด ์ „๊นŒ์ง€๋งŒ ํƒ์ƒ‰ํ•˜๋Š”๋ฐ (ํ•ด๋‹น ์—ด๊นŒ์ง€๋งŒ column์„ ์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—), ๊ฐ™์€ ํ–‰์— ์ด๋ฏธ ํ€ธ์ด ์กด์žฌํ•˜๋ฉด ํ€ธ์„ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์—†๋‹ค.

๋Œ€๊ฐ์„  ์ฝ”๋“œ๋Š” ์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ ๊ณผ ๊ฐ™์ด ์ด๋“ฑ๋ณ€ ์‚ผ๊ฐํ˜• ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ true์ธ์ง€ false์ธ์ง€ ๋ฆฌํ„ดํ•ด์ฃผ์—ˆ๋‹ค.

์œ„ check ์ฝ”๋“œ์—์„œ true๊ฐ€ ๋‚˜์˜ค๋ฉด, ์žฌ๊ท€๋ฅผ ํ†ตํ•ด ๋‹ค์Œ row๋กœ ๊ฐ€๊ฒŒ ๋œ๋‹ค. 

์ด๋ ‡๊ฒŒ row๊ฐ€ N ๊นŒ์ง€ ๋„์ฐฉํ•˜๊ฒŒ ๋˜๋ฉด answer ๊ฐ€ ์ฆ๊ฐ€ํ•˜๊ณ  ๋‹ค๋ฅธ ์ขŒํ‘œ๋กœ ์žฌํƒ์ƒ‰ ์‹œ์ž‘ํ•œ๋‹ค.

 

์ „์ฒด ์†Œ์Šค ์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
/**
 * @author June Park
 * @date 11/08/2021
 * N-Queen Problem
 * on NxN chessboard, find #sols of n queen
 * */
public class BOJ_9663_N_Queen {

	static int [] board; //๊ฐ row ๋งˆ๋‹ค ํ€ธ์„ ๋†“์€ ์ธ๋ฑ์Šค ์ €์žฅ
	static int N , answer;
	
	public static void main(String[] args) throws Exception{
		BufferedReader br= new BufferedReader (new InputStreamReader (System.in));
		N = Integer.parseInt(br.readLine());
		board = new int [N]; //board[row] = col -> row ๋งˆ๋‹ค ํ•˜๋‚˜์˜ ํ€ธ์„ ๋†“์„ ์ˆ˜ ์žˆ์Œ. board[1] = 1๋ฒˆ์งธ row์˜ ํ€ธ์„ ๋ช‡col์— ๋‘์—ˆ๋Š”์ง€ ์ €์žฅํ•œ๋‹ค 
		answer = 0;
		dfs(0);
		System.out.println(answer);
	}
	/**
	 * */
	private static void dfs(int row) {
		if(row == N) {//๋๊นŒ์ง€ ๋„์ฐฉ
			answer++;
			return;
		}
		for(int i = 0 ; i<N ;i ++) {
			board[row] = i; //row ๊ฐ€ 1์ด๋ผ๋ฉด, ํ€ธ์„ i ๋ฒˆ์งธ column์— ์œ„์น˜์‹œ์ผœ๋ณด๊ณ  ๋‘˜ ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํŒ๋‹จ
			if(check(row)) {//ํ•ด๋‹น row์— ๋†“์€ col ์ •๋ณด๊ฐ€ ๊ดœ์ฐฎ์€๊ฐ€..
				dfs(row+1); //๋‹ค์Œ row์— ๋†“์Œ
			}
			//else : ๋‹ค์‹œ col ์„ ์ •ํ›„ ๋ฐ˜๋ณต
		}
	}
	/**
	 * ํ˜„์žฌ ์œ„์น˜์— queen ์ด ๊ฐˆ ์ˆ˜ ์žˆ๋Š”์ง€ ์—†๋Š”์ง€ ํ™•์ธ
	 * 1. ํ€ธ์ด ๊ฐ™์€ col์— ์žˆ๋Š” ๊ฒฝ์šฐ : board[row] = col ์—์„œ ์ขŒํ‘œ๋Š” row, col
	 * board[row] ์™€ board[i] ๋ฅผ ๋น„๊ตํ•˜๋ฉด ๋™์ผํ•œ ์นผ๋Ÿผ์— ์œ„์น˜ํ•˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Œ
	 * 
	 * 2. ๋Œ€๊ฐ์„ ์— ์กด์žฌ ? 
	 * abs(queen.col - curr.col) == abs(queen.row - curr.row) ๋ฉด ๋Œ€๊ฐ์„ ์ƒ์— ์žˆ์Œ
	 * */
	private static boolean check(int row) {
		// ๊ฐ™์€ column์ธ์ง€ ํŒ๋‹จ : board[i] : dfs ๋ฉ”์„œ๋“œ์—์„œ board[row] = col ๋กœ ์ดˆ๊ธฐํ™” ์‹œ์ผœ์คฌ์Œ.
		// board[n] ์€ column ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ์Œ. board[i]==board[row] ๊ฐ™์€ column
		for(int i = 0 ; i< row ;i ++) {
			if(board[i] == board[row])return false;
			//๋Œ€๊ฐ์„  :row, col
			if(Math.abs(i-row)== Math.abs(board[row]-board[i])) return false;
		}
		return true;
	}

}

 

 

Reference:

https://www.codesdope.com/course/algorithms-backtracking/


ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ๋ฐ”๋กœ๊ฐ€๊ธฐ๐Ÿ‘‰ https://bit.ly/3FVdhDa

 

์ˆ˜๊ฐ•๋ฃŒ 100% ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ | ํŒจ์ŠคํŠธ์บ ํผ์Šค

๋”ฑ 5์ผ๊ฐ„ ์ง„ํ–‰๋˜๋Š” ํ™˜๊ธ‰์ฑŒ๋ฆฐ์ง€๋กœ ์ˆ˜๊ฐ•๋ฃŒ 100% ํ™˜๊ธ‰๋ฐ›์œผ์„ธ์š”! ๋” ๋Šฆ๊ธฐ์ „์— ์ž๊ธฐ๊ณ„๋ฐœ ๋ง‰์ฐจ ํƒ‘์Šน!

fastcampus.co.kr

๋ณธ ํฌ์ŠคํŒ…์€ ํŒจ์ŠคํŠธ์บ ํผ์Šค ํ™˜๊ธ‰ ์ฑŒ๋ฆฐ์ง€ ์ฐธ์—ฌ๋ฅผ ์œ„ํ•ด ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

'๐Ÿ““ STUDY > FASTCAMPUS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 10์ผ์ฐจ  (0) 2021.11.10
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 9์ผ์ฐจ  (2) 2021.11.09
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 7์ผ์ฐจ  (0) 2021.11.07
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 6์ผ์ฐจ  (0) 2021.11.06
ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 5์ผ์ฐจ  (0) 2021.11.05
    '๐Ÿ““ STUDY/FASTCAMPUS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 10์ผ์ฐจ
    • ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 9์ผ์ฐจ
    • ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 7์ผ์ฐจ
    • ํŒจ์ŠคํŠธ์บ ํผ์Šค ์ฑŒ๋ฆฐ์ง€ 6์ผ์ฐจ
    JuneBee
    JuneBee
    โ‚Šหš.๐ŸŽง๐Ÿ““ ๊ธฐ๋ก์šฉ ๋ธ”๋กœ๊ทธ ๐“‚ƒ๐Ÿ–Š

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