백준 37

백준 15649 C++

https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 정답 코드 #include using namespace std; int N, M; int arr[9]; bool visited[9]; void dfs(int k){ if (k == M){ for (int i = 0; i M; dfs(0); } visited 배열은 0부터 시작해도 상관 없는데 arr에 저장할 땐 +1을 해줘서 1부터 N까지 자연수 중에서 중복 없이..

백준 2023.11.24

백준 9663 C++

https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net 퀸이 서로 공격할 수 없게 놓는 방법 : 같은 행 / 같은 열 / 같은 대각선 상에 위치하지 않아야 한다. (최지웅 교수님한테 배운 ㅎ) 생각 1. 백트래킹 문제니까 되추적 알고리즘을 쓴다 1.1. 상태 조건 트리를 어떻게 구성할 것인가? -> 트리까지 그릴 필요는 없는 문제인듯 아닌가 하하 1.2. promising 조건을 뭘로 할 것인가? -> 행 / 열 / 대각선이 겹치는지 확인하기 1차원 배열을 써도 되는..

백준 2023.11.23

백준 2231 C++

https://www.acmicpc.net/problem/2231 2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 생각 1. 1부터 커지면서 분해합 비교 (최대 N까지 비교) 2. 하나하나 분해하는 방법을 어떻게 구현 할 것인가??? 2.1. N을 string으로 변환하여 하나씩 받아오기... 미친짓이다 2.2. 10으로 나눠서 자리수 나누기!!! 아는 거 쓰자! //i는 for문으로 1부터 커지도록 함 while(i != 0){ sum += i % 10; i /= 10; } 정답..

백준 2023.11.22

백준 7568 C++

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net #include #include #include using namespace std; int main(){ int N, num1, num2; cin >> N; int arr[N] = {0}; vector v; //입력 for(int i = 0 ; i> num1 >> num2; v.push_back(pair (num1, num2)); } for(int i = 0 ; i

백준 2023.11.22

백준 1018 C++

https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 와 문제 이해를 못해서 하루종일 헤맨 문제... 그냥 어지간히 안풀린다 싶으면 문제 이해를 위해서라도 검색을 해보자 ㅎ 생각 1. 비교를 할 WB / BW 체스판을 미리 만들어 두고 비교를 하자 2. 여기서 키포인트는 한 번만 비교를 하는게 아니라 움직여가면서 비교를 하는 것! #include #include using namespace std; string WB[8] = { "WBWBWB..

백준 2023.11.18

백준 9093 C++

https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net #include #include using namespace std; stack s; int main() { int T; char input; cin >> T; for(int i=0 ; i> input; if (input == ' ' || input == '\n'){ while(!s.empty()){ cout cin.get() 을 쓴다! 2. 엔터를 무조건 출력하는 문제 -> cin.ign..

백준 2023.11.16

백준 2805번 C++

https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net #include #include using namespace std; int main(){ long long N, M, Height; cin >> N >> M; long long arr[N]; for(int i=0 ; i> arr[i]; sort(arr, arr+N); long long start = 0, end = arr[N-1], mid, sum; whi..

백준 2023.11.15

백준 2644번 c++

https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net #include #include #include using namespace std; int N,M,a,b; int arr[102][102]; int visit[102]; queue q; void BFS(int n) { q.push(n); visit[n]=1; while(!q.empty()){ n=q.front(); q.pop(); for(int i=1 ; i>N>>a>>b>>..

백준 2023.08.09
728x90