#include #define MAX 15 using namespace std; int board[MAX]; int N, total = 0; bool is_Possible(int rows) { for (int i = 0; i < rows; i++) if (board[i] == board[rows] || abs(board[rows] - board[i]) == rows - i)// 대각선이거나 같은 라인 return false; //board[i]가 의미하는 것이 X좌표, i가 의미하는것이 Y좌표이므로 차이가 일정하다면 대각선에 있다고 볼 수 있다. return true; } void N_Queen(int x) { if (x == N) total++; else { for (int i = 0; i < N; i..
알고리즘/백준(BOJ)
백준 10870 Fibonacci 문제도 간단한 문제이지만 재귀 함수를 생각하고 문제를 풀면 조금은 어려워진다. 재귀 함수는 결국 함수가 재귀되면서 마지막에 Return 되는 값이 어떻게 설정되는지를 고려하고 풀면 문제는 굉장히 쉽다. 처음 값을 어떻게 가져가야하는지에 대한 고민보다 마지막에 어떤 값을 Return 해줘야하는지를 고민해야하는 문제라고 생각하면 될 듯하다. #include using namespace std; int Recursive_Fibonacci(int N) { if (N == 0) return 0; if (N == 1) return 1; if (N > 1) return Recursive_Fibonacci(N - 1) + Recursive_Fibonacci(N - 2); } int m..
백준 10872 팩토리얼 같은 문제는 굉장히 쉬운 문제로, 아래 첫 번째 코드로 작성해도 풀린다. 하지만, 재귀 함수 문제로 재귀를 연습하는데 용이한 문제다. #include using namespace std; int main() { int N; cin >> N; int answer = 1; if (N != 0) { for (int i = 1; i N; cout
백준 10989 수 정렬하기 3 문제는 내게 시행착오를 많이 겪게 했다. 나는 Visual Studio로 먼저 문제를 풀어보고 답이 나오면 제출하곤 하는데, 보통 이렇게 해도 메모리 초과, 출력 초과 등 여러 문제로 틀리곤 한다. 먼저 이 문제는 문제 설명란에 분명 "수의 범위가 작다면 카운팅 정렬을 사용하여 더욱 빠르게 정렬할 수 있습니다." 라고 써있었다. 카운팅 정렬 알고리즘을 공부하고 풀어보면, 이 문제는 메모리 초과로 틀리게 된다. 8MB 로 메모리 제한이 있기 때문이다. C++ 입출력 속도차이를 아래와 같은 방법으로 해결해야한다. ios::sync_with_stdio(false); => C 표준 stream과 C++ 표준 stream의 동기화를 끊는 것을 의미한다. cin.tie(NULL); ..