본문 바로가기

Algorithm350

[BOJ]1062번: 가르침 (c++) https://www.acmicpc.net/problem/1062 1062번: 가르침 첫째 줄에 단어의 개수 N과 K가 주어진다. N은 50보다 작거나 같은 자연수이고, K는 26보다 작거나 같은 자연수 또는 0이다. 둘째 줄부터 N개의 줄에 남극 언어의 단어가 주어진다. 단어는 영어 소문 www.acmicpc.net 비트마스크 + 백트랙킹 #include #include #include using namespace std; int count(vector& words, int mask) { int cnt = 0; for (int word : words) { // word에 mask에 포함되지 않는 비트가 없다면 카운팅 if ((word & ((1 N >> K; vector words(N); for (in.. 2020. 6. 12.
[BOJ]4574번: 스도미노쿠 (c++) https://www.acmicpc.net/problem/4574 4574번: 스도미노쿠 문제 스도쿠가 세계적으로 유행이 된 이후에, 비슷한 퍼즐이 매우 많이 나왔다. 게임 매거진 2009년 7월호에는 스도쿠와 도미노를 혼합한 게임인 스도미노쿠가 소개되었다. 이 퍼즐은 스도쿠 규 www.acmicpc.net 스도쿠 문제를 응용하여 백트랙킹 #include #include using namespace std; const int N = 9; int dr_x[] = {0, 1}; int dr_y[] = {1, 0}; vector vert; vector hori; vector box; vector domino; vector sdoku; void print_sdoku() { for (int i = 0; i < N.. 2020. 6. 12.
[BOJ]2580번: 스도쿠 (c++) https://www.acmicpc.net/problem/2580 2580번: 스도쿠 스도쿠는 18세기 스위스 수학자가 만든 '라틴 사각형'이랑 퍼즐에서 유래한 것으로 현재 많은 인기를 누리고 있다. 이 게임은 아래 그림과 같이 가로, 세로 각각 9개씩 총 81개의 작은 칸으로 이루 www.acmicpc.net 백트랙킹으로 적합한 숫자 채워나가기 #include using namespace std; const int N = 9; bool vert[N][N + 1]; bool hori[N][N + 1]; bool box[N][N + 1]; int sdoku[N][N]; // 스도쿠 프린트 void print_sdoku() { for (int i = 0; i < N; ++i) { for (int j = 0;.. 2020. 6. 11.
[BOJ]9663번: N-Queen (c++) https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 방법 1 : 2차원 배열을 만들어서 공격 가능한 지점들을 미리 제외하기 #include #include using namespace std; int dr_x[] = {1, 1, 1}; int dr_y[] = {1, 0, -1}; int N, cnt; // 퀸이 공격 가능한 지점의 값을 +num 하기 (좌하향, 아래, 우하향) void check_ways(vector& check, int x, int y, int .. 2020. 6. 11.