본문 바로가기

백준 문제풀이

(79)
[C++] 백준 문제풀이 (Number Theory) 6588번 골드바흐의 추측 https://www.acmicpc.net/problem/6588 6588번: 골드바흐의 추측 각 테스트 케이스에 대해서, n = a + b 형태로 출력한다. 이때, a와 b는 홀수 소수이다. 숫자와 연산자는 공백 하나로 구분되어져 있다. 만약, n을 만들 수 있는 방법이 여러 가지라면, b-a가 가장 큰 www.acmicpc.net #include // [C++] 백준 문제풀이 (Number Theory) int n; bool primes[1000001]; int main(int argc, char *argv[]) { std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); for (int i = 2; i * i < 1000001; ++i){ if ..
[C++] 백준 문제풀이 (Bruteforcing) 15661번 링크와 스타트 https://www.acmicpc.net/problem/15661 15661번: 링크와 스타트 첫째 줄에 N(4 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에 S가 주어진다. 각 줄은 N개의 수로 이루어져 있고, i번 줄의 j번째 수는 Sij 이다. Sii는 항상 0이고, 나머지 Sij는 1보다 크거나 같고, 100 www.acmicpc.net #include // [C++] 백준 문제풀이 (Bruteforcing) int n; int stats[20][20]; bool sel[20]; int ret = INT_MAX; // depth 현재까지 탐색한 사람 수 // cnt 현재까지 start팀에 속한 사람 수 void dfs(int depth, int cnt){ if (depth > n) re..
[C++] 백준 문제풀이 (Bruteforcing) 16508번 전공책 https://www.acmicpc.net/problem/16508 16508번: 전공책 곧 졸업을 앞둔 민호는 대학교 생활 동안 구매만 해놓고 한 번도 펴보지 않은 전공책에 먼지가 쌓여 있는 것을 보고는, 이 책들을 어떻게 처리해야 할지 고민 중이다. 열심히 고민한 끝에 민호는 www.acmicpc.net #include // [C++] 백준 문제풀이 (Bruteforcing) std::string T; int N; std::string books[16]; int prices[16]; int tAlpha[26]; int alpha[26]; int ret = INT_MAX; bool check(){ for (char ch : T){ if (tAlpha[ch - 'A'] > alpha[ch - 'A']) ..
[C++] 백준 문제풀이 (Bruteforcing) 16943번 숫자 재배치 https://www.acmicpc.net/problem/16943 16943번: 숫자 재배치 두 정수 A와 B가 있을 때, A에 포함된 숫자의 순서를 섞어서 새로운 수 C를 만들려고 한다. 즉, C는 A의 순열 중 하나가 되어야 한다. 가능한 C 중에서 B보다 작으면서, 가장 큰 값을 구해보자. C는 0 www.acmicpc.net //[C++] 백준 문제풀이 (Bruteforcing) #include int ret = -1; int nums[9]; bool used[9]; // k 자리수 // flag 예를들어 3자리인 경우 모든 숫자는 x >= 100을 만족해야한다. // 그렇지 않다면 0이 백의 자리수에 온 경우에 만들어진 숫자이기 때문이다. int A, B, flag, k; void dfs(in..
[C++] 백준 문제풀이 (Bruteforcing) 16922번 로마 숫자 만들기 https://www.acmicpc.net/problem/16922 16922번: 로마 숫자 만들기 2, 6, 10, 11, 15, 20, 51, 55, 60, 100을 만들 수 있다. www.acmicpc.net //[C++] 백준 문제풀이 (Bruteforcing) #include int n; int values[4] = {1, 5, 10, 50}; bool check[1001]; int ret = 0; void dfs(int depth, int select, int sum){ if (depth == n){ if (check[sum] == false){ check[sum] = true; ++ret; } return; } for (int i = select; i < 4; ++i){ dfs(depth +..
[C++] 백준 문제풀이 (Bruteforcing) 16198번 에너지 모으기 https://www.acmicpc.net/problem/16198 16198번: 에너지 모으기 N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있 www.acmicpc.net //[C++] 백준 문제풀이 (Bruteforcing) #include bool used[10]; int balls[10]; int n; int ret = INT_MIN; void dfs(int depth, int sum){ if (depth == n - 2){ ret = std::max(ret, sum); return; } for (int i = 1; i < n - 1; ++i){ if (..
[C++] 백준 문제풀이 (Bruteforcing) 17086번 아기 상어 2 https://www.acmicpc.net/problem/17086 17086번: 아기 상어 2 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸과 상어의 수가 각각 한 개 이상인 입력만 www.acmicpc.net //[C++] 백준 문제풀이 (Bruteforcing) #include int map[50][50]; int dist[50][50]; int main(){ std::ios_base::sync_with_stdio(false); std::cin.tie(nullptr); int n, m; int ret = INT_MIN; std::cin >> n >> m; for (int ..
[C++] 백준 문제풀이 (String) 2992번 크면서 작은 수 https://www.acmicpc.net/problem/2992 2992번: 크면서 작은 수 정수 X가 주어졌을 때, X와 구성이 같으면서 X보다 큰 수 중 가장 작은 수를 출력한다. 수의 구성이 같다는 말은, 수를 이루고 있는 각 자리수가 같다는 뜻이다. 예를 들어, 123과 321은 수의 구성이 www.acmicpc.net //[C++] 백준 문제풀이 (String) #include std::string s; std::vector ret; std::string str; bool used[6]; void dfs(){ if (str.length() == s.length()){ if (str > s){ ret.push_back(str); } return; } for (int i = 0; i < s.len..