본문 바로가기

Algorithm/C++149

[백준 15651] N과 M (3) 15651번: N과 M (3) (acmicpc.net) 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 정답 코드 #include using namespace std; int n, m; int arr[10]; void func(int k){ // 현재 k개까지 수를 택했음. if(k == m){ // m개를 모두 택했으면 for(int i = 0; i < m; i++) cout m; func(0); } 2022. 9. 16.
[백준 15650] N과 M (2) 15650번: N과 M (2) (acmicpc.net) 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 배운것 - N과 M (1) 같은 경우에는 오름차순으로 싹다 뽑으면 되니까 for문 돌릴 때 그냥 i=0부터 신경쓰지 않아도 되었는데 N과 M (2)의 경우 중복되면 안되고 ( {1,2,3} , {3,2,1} ) 오름차순이라서 i=0으로 놓으면 안됨 그래서 시작 변수를 만들어줘서 임의로 변경을 시켜줌 - 순열과 조합 정답 코드 1 #include using namespace std; int n, m; int .. 2022. 9. 16.
[백준 1182] 부분수열의 합 1182번: 부분수열의 합 (acmicpc.net) 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 정답 풀이 #include using namespace std; int n, s; int arr[30]; int cnt = 0; void func(int cur, int tot){ if(cur == n){ if(tot == s) cnt++; return; } func(cur+1, tot); func(cur+1, tot+arr[cur]); } int main(void) { io.. 2022. 9. 15.
[백준 9663] N-Queen 9663번: N-Queen (acmicpc.net) 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 정답 풀이 #include using namespace std; bool isused1[40]; // column을 차지하고 있는지 bool isused2[40]; // / 방향 대각선을 차지하고 있는지 bool isused3[40]; // \ 방향 대각선을 차지하고 있는지 int cnt = 0; int n; void func(int cur) { // cur번째 row에 말을 배치할 예정임 if (cur == n) { // N.. 2022. 9. 15.
[백준 15649] N과 M (1) - 백트래킹 15649번: N과 M (1) (acmicpc.net) 배운것 백트래킹의 핵심은? 1. 현재 위치 어디인지 확인하기 2. 가지치기- isused 체크 해주고 체크 해제 해주기 정답 코드 #include using namespace std; int n,m; int arr[10]; bool isused[10]; void func(int k){ // 현재 k개까지 수를 택했음. if(k == m){ // m개를 모두 택했으면 for(int i = 0; i < m; i++) cout m; func(0); } 2022. 9. 15.
[백준 2447] 별 찍기 -10 2447번: 별 찍기 - 10 (acmicpc.net) 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 정답 풀이1 #include using namespace std; char board[2300][2300]; // solve(n, x, y) : board[x][y] to board[x+n-1][y+n-1]에 올바르게 '*'과 ' '을 넣는 함수 void solve(int n, int x, int y) { if (n == 1) { board[x][y] = '*'; return; }.. 2022. 9. 14.