[백준] 9663번 N-Queen - c++

2022. 3. 21. 17:08·코딩/백준 - c++

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

 

9663번: N-Queen

N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오.

www.acmicpc.net

#include<iostream>

using namespace std;
int arr[15];
int n, m,row;
int answer = 0;

bool check(int row) {

	for (int i = 0; i < row; i++) {
		if (arr[i] == arr[row] || abs(arr[i]- arr[row]) == row - i ) {
			return false;
		}
	}
	return true;
}

void dfs(int cnt ) {
	if (cnt ==n ) {
		answer++;

	}
	else {
		for (int i = 0; i < n; i++) {
			arr[cnt] = i;
			if (check(cnt)) {
				dfs(cnt + 1);
			}
		}
	}
}
int main() {
	
	cin >> n ;

	dfs(0);
	cout << answer;
}

이 문제 파이썬에서도 비슷하세 풀었는데

어렵다 어려워 사실 배열에 위치를 저장하는 거 생각하는 것도 어려웠고

어떻게 대각선 확인하지? 하고 생각했다

가로 차이랑 세로차이가 같으면 대각선위 위치에 있다는거 생각하는게 어려웠다

파이썬으로 풀면 그냥 2차원 배열 했을 텐에 그렇게 하면 아마 시간 초과 백퍼나온다

이런한 방법이 있다는 것 꼭 인지해두자!

반응형

'코딩 > 백준 - c++' 카테고리의 다른 글

[백준] 14889번 스타트와 링크 - c++  (0) 2022.03.22
[백준] 14888번 연산자 끼워넣기 - c++  (0) 2022.03.22
[백준] 15651번 N과 M (3) - c++  (0) 2022.03.20
[백준] 15650번 N과 M (2) - c++  (0) 2022.03.19
[백준] 15649번 N과 M (1) - c++  (0) 2022.03.18
'코딩/백준 - c++' 카테고리의 다른 글
  • [백준] 14889번 스타트와 링크 - c++
  • [백준] 14888번 연산자 끼워넣기 - c++
  • [백준] 15651번 N과 M (3) - c++
  • [백준] 15650번 N과 M (2) - c++
코딩 코딩 코오딩
코딩 코딩 코오딩
  • 코딩 코딩 코오딩
    코딩하는 누누
    코딩 코딩 코오딩
  • 전체
    오늘
    어제
    • 분류 전체보기 (491)
      • 생산성 (2)
        • 인텔리제이 (2)
      • 프로젝트 기록 (14)
        • git (2)
        • spring (3)
        • TestCode (2)
        • spring security (3)
        • 기타 (2)
        • MySQL (0)
        • Cloud (2)
      • 회고 (4)
      • Spring (6)
      • JPA (0)
      • DB (4)
        • MySql (2)
        • Redis (1)
      • Java (7)
        • JSP (1)
      • 잡담 (1)
      • CS (30)
        • 컴퓨팅 사고 (0)
        • 배열 (4)
        • 알고리즘 (8)
        • 메모리 (7)
        • 자료구조 (9)
        • 암호학 (2)
      • opencv (14)
      • AI (56)
        • 머신러닝 (2)
        • 딥러닝 (7)
        • tensorflow (3)
        • 머신러닝(딥러닝) 정리 (21)
        • 강화학습 (7)
        • 논문 읽기 (1)
        • 잡동사니 (1)
        • python AI (13)
        • 선형대수 (1)
        • 확률론 (0)
      • 알고리즘 공부 (177)
        • 그래프 이론 (0)
        • 다익스트라 (4)
        • 위상정렬 (3)
        • 신장트리-크루스칼 알고리즘 (4)
        • 플로이드 워셜 (3)
        • 이진탐색 (9)
        • 백트래킹 (11)
        • 부르드포스 (9)
        • 다이나믹 프로그래밍 (20)
        • BFS & DFS (24)
        • 그리디 (6)
        • 구현 (15)
        • 정렬 (3)
        • 기타 (62)
        • 수학? (1)
      • 코딩 (173)
        • 파이썬(python) (15)
        • c언어 (13)
        • 프로그래머스 lv1 (46)
        • 프로그래머스 lv2 (41)
        • 백준 - c++ (49)
        • Softeer (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    스택
    DFS
    백준
    정렬
    인접리스트
    인접행렬
    코딩기초
    if문
    코딩테스트
    삽입 정렬
    코딩기초스킬
    코딩
    에라토슽네스의 체
    순차 탐색
    캘리브레이션
    소수찾기
    이미지처리
    왜곡보정
    알고리즘
    BFS
    n진법 변환
    선택정렬
    그리디
    코딩문제
    큐
    다이나믹 프로그래밍
    C언어 기초
    프로그래머스
    c언어
    자료구조
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
코딩 코딩 코오딩
[백준] 9663번 N-Queen - c++
상단으로

티스토리툴바