[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - N-Queen(C++)

2023. 7. 31. 11:16ยท๐Ÿ–ฅ๏ธ Study Note/Coding Test

https://school.programmers.co.kr/learn/courses/30/lessons/12952

๋ฌธ์ œ ์„ค๋ช…

๊ฐ€๋กœ, ์„ธ๋กœ ๊ธธ์ด๊ฐ€ n์ธ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ๋œ ์ฒด์ŠคํŒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒด์ŠคํŒ ์œ„์˜ n๊ฐœ์˜ ํ€ธ์ด ์„œ๋กœ๋ฅผ ๊ณต๊ฒฉํ•  ์ˆ˜ ์—†๋„๋ก ๋ฐฐ์น˜ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด์„œ n์ด 4์ธ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ€ธ์„ ๋ฐฐ์น˜ํ•˜๋ฉด n๊ฐœ์˜ ํ€ธ์€ ์„œ๋กœ๋ฅผ ํ•œ๋ฒˆ์— ๊ณต๊ฒฉ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ฒด์ŠคํŒ์˜ ๊ฐ€๋กœ ์„ธ๋กœ์˜ ์„ธ๋กœ์˜ ๊ธธ์ด n์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, n๊ฐœ์˜ ํ€ธ์ด ์กฐ๊ฑด์— ๋งŒ์กฑ ํ•˜๋„๋ก ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์˜ ์ˆ˜๋ฅผ returnํ•˜๋Š” solutionํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

๋‚ด ํ’€์ด

N-Queen์€ ๋ฐฑํŠธ๋ž˜ํ‚น์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ œ๋ผ๊ณ  ํ•œ๋‹ค.

๋ฐฑํŠธ๋ž˜ํ‚น์„ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ๋‹ค์‹œ ํ’€์–ด๋ดค๋Š”๋ฐ, ์กฐ๊ฑด์— ๋”ฐ๋ผ DFS๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ์กฐ๊ฑด์— ๋งž์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ์ฒ˜์Œ๋ถ€ํ„ฐ ์กฐ๊ฑด์— ๋”ฐ๋ผ DFS๋ฅผ ์ง„ํ–‰ํ•˜๋Š” ๋А๋‚Œ์ด์—ˆ๋‹ค. ๋ฐฑํŠธ๋ž˜ํ‚น ๊ณต๋ถ€ํ•  ์ˆ˜ ์žˆ์–ด ์ข‹์€ ๋ฌธ์ œ์˜€๋‹ค.

#include <string>
#include <vector>

using namespace std;

int N;
int answer = 0;
int queen_col[13]; // 1์ฐจ์› ๋ฐฐ์—ด๋กœ ํ‘œ์‹œ

bool check(int row)
{
    // ๊ฐ™์€ ํ–‰, ์—ด๊ณผ ๋Œ€๊ฐ์„ ์ƒ์— ๋†“์ผ ์ˆ˜ ์—†๋‹ค.
    for(int i = 0; i < row; ++i)
    {
        if(queen_col[row] == queen_col[i] 
           || row-i == abs(queen_col[row]-queen_col[i]))
            return false;
    }
    return true;
}

void nqueen(int row)
{
    // ์—ด ๊ฐœ์ˆ˜์™€ queen ๊ฐœ์ˆ˜ ๊ฐ™์œผ๋ฉด ์ฐพ๊ธฐ ์™„๋ฃŒ
    if(row == N)
    {
        ++answer;
        return;
    }
    
    for(int i = 0; i < N; ++i)
    {
        // 1. row ํ–‰, i๋ฒˆ์งธ ์—ด์— queen ๋†“์•„๋ณด๊ธฐ
        queen_col[row] = i;
    
        // 2. ๊ฒ€์ฆํ•˜๊ธฐ
        if(check(row))
        {
        // 3. ๋‹ค์Œ ํ€ธ ๋†“๊ธฐ
            nqueen(row+1);
        }
    }

}

int solution(int n) 
{
    N = n;
    nqueen(0);
    return answer;
}
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ–ฅ๏ธ Study Note > Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ํ• ์ธ ํ–‰์‚ฌ(C++)  (0) 2023.08.03
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ์ธ์‚ฌ๊ณ ๊ณผ(C++)  (1) 2023.08.01
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - n^2 ๋ฐฐ์—ด ์ž๋ฅด๊ธฐ(C++)  (0) 2023.07.28
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ํ…Œ์ด๋ธ” ํ•ด์‹œ ํ•จ์ˆ˜(C++)  (0) 2023.07.27
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ๊ฑฐ์Šค๋ฆ„๋ˆ(C++)  (0) 2023.07.25
'๐Ÿ–ฅ๏ธ Study Note/Coding Test' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ํ• ์ธ ํ–‰์‚ฌ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.3 - ์ธ์‚ฌ๊ณ ๊ณผ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - n^2 ๋ฐฐ์—ด ์ž๋ฅด๊ธฐ(C++)
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - ํ…Œ์ด๋ธ” ํ•ด์‹œ ํ•จ์ˆ˜(C++)
Beankong_
Beankong_
์ฃผ๋‹ˆ์–ด ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๊ณต๋ถ€ ๊ธฐ๋ก
  • Beankong_
    Beankong's Devlog
    Beankong_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด ๊ธ€ (146)
      • โ›… Daily (0)
      • ๐Ÿ–ฅ๏ธ Study Note (2)
        • C++ (1)
        • Unreal Engine (5)
        • Coding Test (123)
        • Design Patteren (5)
        • VCS (Git..) (1)
        • Server (1)
      • ๐Ÿงญ Devlog (8)
        • ์˜ค๋‹ต๋…ธํŠธ (4)
        • UE5 GameLift Server Test Project (1)
        • TIL (3)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ๋งํฌ

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

    • ์ธ๊ธฐ ๊ธ€

    • ํƒœ๊ทธ

      OnlineSubsystem
      ๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      ์ตœ๋‹จ ๊ฑฐ๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
      ํ”„๋ฃŒ๊ทธ๋ž˜๋จธ์Šค
      ํ—ฌํ…Œ์ด์ปค
      UnrealEngine
      ๊ฒŒ์ž„ ๊ฐœ๋ฐœ
      unrealengine build system
      ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
      ๊ฒŒ์ž„ํ”„๋กœ๊ทธ๋ž˜๋ฐ
      ์•Œ๊ณ ๋ฆฌ์ฆ˜
      ๊ฒŒ์ž„ ๋ชจ์ž‘
      propertyaccess
      ๊ทธ๋ž˜ํ”„ ์ˆœํšŒ
      ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
      unrealengine module
      programmers
      ๊ทธ๋ฆฌ๋””(greedy)
      UnrealEngine5
      cpp
    • ์ตœ๊ทผ ๋Œ“๊ธ€

    • ์ตœ๊ทผ ๊ธ€

    • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
    Beankong_
    [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค]level.2 - N-Queen(C++)
    ์ƒ๋‹จ์œผ๋กœ

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