글
프로그래머스 레벨2 N-Queen C#(JAVA) - 완전탐색 private void/bool
C#
using System;
public class Solution {
private int n;
private int[] queen;
private int answer = 0;
public int solution(int n) {
this.n = n;
this.queen = new int[n];
locate(0);
return answer;
}
private void locate(int currentRow)
{
if (currentRow == n)
answer++;
else
{
for (int inx = 0; inx < n; inx++)
{
queen[currentRow] = inx;
if (isSearch(currentRow))
{
locate(currentRow+1);
}
}
}
}
private bool isSearch(int currentRow)
{
for (int inx = 0; inx < currentRow; inx++)
{
if (queen[inx] == queen[currentRow])
return false;
//직선
if (Math.Abs(inx - currentRow) == Math.Abs(queen[inx] - queen[currentRow]))
return false;
//대각선
}
return true;
}
}
/////////////
자바
import java.util.*;
class Solution {
static int[] col;
public boolean check(int here) {
for(int i = 0; i < here; i++)
{
if(col[here] == col[i]) return false;
if(Math.abs(col[here] - col[i]) == here - i) return false;
}
return true;
}
public int dfs(int n, int index) {
if(index == n)
{
return 1;
}
int res = 0;
for(int i = 0; i < n; i++)
{
col[index] = i;
if(check(index)) res += dfs(n, index + 1);
col[index] = -1;
}
return res;
}
public int solution(int n)
{
int answer = 0;
col = new int[n];
for(int i = 0; i < n; col[i++] = -1);
answer = dfs(n, 0);
return answer;
}
}
'프로그래밍' 카테고리의 다른 글
프로그래머스 이모티콘 할인행사 C#() (0) | 2023.02.23 |
---|---|
프로그래머스 레벨3 가장 먼 노드 C#(JAVA) queue, BFS (0) | 2023.02.23 |
프로그래머스 레벨2 주식가격 C#(JAVA) (0) | 2023.02.23 |
프로그래머스 레벨2 뒤에 있는 큰 수 찾기 C#(JAVA) peek, pop, push (0) | 2023.02.23 |
프로그래머스 레벨2 C# 연속 부분 수열 합의 개수(Hash.Count, HashSet, Skip, Take, JAVA) (0) | 2023.02.11 |