반응형
https://www.acmicpc.net/problem/9663
학교에서 배운거라 문제도 안읽고 그냥 풀었는데
학교에서 배운 n-queen이랑 달라서 `맞는데 왜 틀렸지` 상황이 나왔다. 역시 문제를 열심히 읽어야한다.
package main
import (
"bufio"
"fmt"
"os"
)
var writer = bufio.NewWriter(os.Stdout)
var reader = bufio.NewReader(os.Stdin)
func printf(f string, a ...interface{}) { fmt.Fprintf(writer, f, a...) }
func scanf(f string, a ...interface{}) { fmt.Fscanf(reader, f, a...) }
var table [][]int
var n int
func isPossible(x, y int) bool {
for i := 0; i <= x; i++ {
if table[i][y] == 1 {
return false
}
if x-i >= 0 && y-i >= 0 && table[x-i][y-i] == 1 {
return false
}
if x-i >= 0 && y+i < n && table[x-i][y+i] == 1 {
return false
}
}
return true
}
func putput(x, y int) (result int) {
table[x][y] = 1
if x == n-1 {
return 1
}
for i := 0; i < n; i++ {
if isPossible(x+1, i) {
result += putput(x+1, i)
table[x+1][i] = 0
}
}
return
}
func main() {
defer writer.Flush()
scanf("%d\n", &n)
table = make([][]int, n)
for i := 0; i < n; i++ {
table[i] = make([]int, n)
}
result := 0
for i := 0; i < n; i++ {
result += putput(0, i) // 첫째줄부터 간다
table[0][i] = 0
}
printf("%d\n", result)
}
'Study > algorithms' 카테고리의 다른 글
[백준] 2748 피보나치 수 2 (0) | 2020.02.03 |
---|---|
[백준] 14888 연산자 끼워넣기 (0) | 2020.01.29 |
[백준] 15652 N과 M (4) (0) | 2020.01.27 |
[백준] 15651 N과 M (3) (0) | 2020.01.27 |
[백준] 15649 N과 M (1) (0) | 2020.01.26 |