[프로그래머스] 12952 - N-Queen

2024. 9. 4. 21:56·Algorithm

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 파악

N * N의 체스판에서 N개의 퀸을 놓을 수 있는 경우의 수를 리턴

 

어려운 점

시간 초과가 나지 않게 구현하도록 하자.

재귀로 구현하게 될 것 같은데 시간 복잡도가 높아지지 않는 방법을 생각해 내기가 어려웠다.

 

풀이

int 배열을 생성하여

  • index -> column
  • index애 해당하는 값 -> row

로 지정하여 구현하면 일차원 배열로도 구현 가능하다.

n개의 퀸을 필수적으로 놓아야 하므로,

  • column(= queen의 개수)을 높여 가며 퀸의 개수가 N에 도달하는 경우에 경우의 수를 늘려 준다.
    • 이 때, column을 늘려 간다는 뜻은 column-1 에 해당하는 칸까지 무사히 퀸을 놓았다고 볼 수 있다.
  • 현재 column에 row를 변화시키며 체스판에 변화를 주고, column-1까지의 퀸에 당하지 않는 경우 재귀호출하도록 한다

 

코드

static int[] arr;
static int answer;
static int N;

public static int solution(int n) {
    N = n;
    arr = new int[N];
    backTracking(0);
    return answer;
}

public static void backTracking(int depth) {
    if (depth == N) {
        answer++;
        return;
    }
    for (int i = 0; i < N; i++) {
        arr[depth] = i;
        if (available(depth)) {
            backTracking(depth + 1);
        }
    }
}

public static boolean available(int col) {
    for (int i = 0; i < col; i++) {
        if (arr[i] == arr[col] || Math.abs(col - i) == Math.abs(arr[col] - arr[i])) {
            return false;
        }
    }
    return true;
}
저작자표시 비영리 변경금지 (새창열림)

'Algorithm' 카테고리의 다른 글

[프로그래머스] 161988 - 연속 펄스 부분  (0) 2024.10.06
[프로그래머스] 340212 - 퍼즐 게임 챌린지  (2) 2024.09.09
[프로그래머스] 77885 - 2개 이하로 다른 비트  (0) 2024.09.03
Python Tips  (0) 2022.09.25
백준 11053 - 가장 긴 증가하는 부분 수열  (0) 2022.04.18
'Algorithm' 카테고리의 다른 글
  • [프로그래머스] 161988 - 연속 펄스 부분
  • [프로그래머스] 340212 - 퍼즐 게임 챌린지
  • [프로그래머스] 77885 - 2개 이하로 다른 비트
  • Python Tips
코드파고
코드파고
  • 코드파고
    Digging Code
    코드파고
  • 전체
    오늘
    어제
    • 분류 전체보기 (99)
      • Memorization (12)
      • Spring (18)
      • Java (1)
      • Algorithm (40)
      • Server (2)
      • DB (0)
      • CS (0)
      • CI & CD (4)
      • Architecture (0)
      • Design Patterns (0)
      • Study (1)
      • Book (9)
        • DEV (7)
        • Non-DEV (0)
      • Infra (1)
        • Kafka (6)
        • AWS (4)
      • TroubleShooting (1)
        • Etc (1)
      • Tools (0)
  • 블로그 메뉴

    • 홈
    • Github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Spring
    architecture
    Spring Boot
    헥사고날아키텍쳐
    SpringFramework
    클린아키텍쳐
    Spring독학
    clean architecture
    Clean Code
    알고리즘
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
코드파고
[프로그래머스] 12952 - N-Queen
상단으로

티스토리툴바