[백준] 9663번: N-Queen(C++)

2025. 5. 31. 18:23·개발/알고리즘
목차
  1. 문제 링크
  2. 코드 구현
  3. 해결 방법
728x90

문제 링크

https://www.acmicpc.net/problem/9663

 

 

코드 구현


      
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N;
// 현재 행에 다른 퀸이 있는지
bool isSameRow(int placedRow, int currentRow)
{
return placedRow == currentRow;
}
// 대각선에 다른 퀸이 있는지
bool isDiagonal(int placedCol, int placedRow, int currentCol, int currentRow)
{
// 대각선에 있으면 가로 길이 차이 = 세로 길이 차이
return abs(placedCol - currentCol) == abs(placedRow - currentRow);
}
// 퀸을 안전하게 배치할 수 있는지
bool isSafePosition(const vector<int>& queen, int col, int row)
{
for (int i = 0; i < col; ++i)
{
// 같은 행이나 대각선에 퀸이 이미 있으면 false
if (isSameRow(queen[i], row) || isDiagonal(i, queen[i], col, row))
{
return false;
}
}
return true;
}
long long placeQueens(vector<int>& queen, int col)
{
if (col == N)
return 1;
long long count = 0;
for (int row = 0; row < N; ++row)
{
// 퀸을 놓을 수 있는 위치면 퀸을 배치
if (isSafePosition(queen, col, row))
{
queen[col] = row;
count += placeQueens(queen, col + 1);
queen[col] = -1;
}
}
return count;
}
int main()
{
cin >> N;
// queen[n] : n행 queen[n]열에 퀸이 있음
vector<int> queen(N, -1);
cout << placeQueens(queen, 0);
return 0;
}

 

 

해결 방법


  • 백트래킹을 사용하여 연산 횟수 줄임
  • 같은 행 or 대각선상에 다른 퀸이 있으면 돌아감
  • n개의 퀸을 다 배치했다면 count 값 1증가

 

'개발 > 알고리즘' 카테고리의 다른 글

[백준] 2206번: 벽 부수고 이동하기(C++)  (1) 2025.06.09
[프로그래머스] 이중우선순위큐(C++)  (1) 2025.06.08
[프로그래머스] 정수 삼각형(C++)  (1) 2025.05.31
[프로그래머스] 단어 변환(C++)  (1) 2025.05.26
[백준] 7576번: 토마토(C++)  (1) 2025.05.24
  1. 문제 링크
  2. 코드 구현
  3. 해결 방법
'개발/알고리즘' 카테고리의 다른 글
  • [백준] 2206번: 벽 부수고 이동하기(C++)
  • [프로그래머스] 이중우선순위큐(C++)
  • [프로그래머스] 정수 삼각형(C++)
  • [프로그래머스] 단어 변환(C++)
Majangnan
Majangnan
  • Majangnan
    개발 모코코
    Majangnan
  • 전체
    오늘
    어제
    • 분류 전체보기 (71)
      • 개발 (70)
        • C# (10)
        • SQL (3)
        • Unity (9)
        • Unreal (10)
        • C++ (3)
        • Server (1)
        • DX11 (8)
        • 알고리즘 (25)
  • 블로그 메뉴

    • 홈
    • 방명록
    • 깃허브
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    백준
    dx3d
    MAC
    blueprint
    sql
    c++
    프로그래머스
    DirectX11
    알고리즘
    블루프린트
    C#
    Unity
    언리얼
    슈팅게임
    Mecanim
    상속
    DX11
    3dlight
    코딩테스트
    UnReal
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Majangnan
[백준] 9663번: N-Queen(C++)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.