목록백준/브루트 포스 (8)
Study hard

https://www.acmicpc.net/problem/1987 1987번: 알파벳 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으 www.acmicpc.net [풀이] 같은 알파벳이 적힌 칸을 두 번 지날 수 없다는 조건이 있으므로 새로운 알파벳을 지날 때마다 체크를 해주었다. 한 칸씩 움직일 때마다 최대 칸 수를 갱신한다. #include #include using namespace std; int R, C; char Board[20][20]; bool check[25];//ascii코드로 변환해서 체크 const int dx[] = { -1,..

https://www.acmicpc.net/problem/16198 16198번: 에너지 모으기 N개의 에너지 구슬이 일렬로 놓여져 있고, 에너지 구슬을 이용해서 에너지를 모으려고 한다. i번째 에너지 구슬의 무게는 Wi이고, 에너지를 모으는 방법은 다음과 같으며, 반복해서 사용할 수 있� www.acmicpc.net [풀이] 모든 경우의 수에 대해 모을 수 있는 에너지 양을 구하는 브루트 포스로 문제를 풀었다. 재귀함수를 이용해 구슬이 3개 남았을 때 1번 구슬의 무게와 3번 구슬의 무게를 곱한 것을 지금까지 축적한 합에 합한 값이 최대값인지 확인한 후 return 해주었다. #include #include using namespace std; int N;//에너지 구슬의 개수 vector W(10);..

https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변� www.acmicpc.net [풀이] 브루트 포스 문제이므로 만들 수 있는 모든 테트로미노에 대해 그 합이 가장 최대인 수를 구하면 된다. 위와 같은 모양은 2차원 map에서 상하좌우 경로를 탐색하는 방법으로 쉽게 구할 수 있지만, 위와 같은 모양은 3칸까지 선택한 상황에서, 현재 칸의 상하좌우 칸을 검사했을 때 그 칸이 이미 선택된 경우 그 칸에 대해 상하좌우 칸을 다시 검색하여 만들 수 있다. 이렇게 4칸을 모두 선택했..

https://www.acmicpc.net/problem/15658 15658번: 연산자 끼워넣기 (2) N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 연산자의 개수� www.acmicpc.net [풀이] 14888번 연산자 끼워넣기와 똑같은 풀이이다. 2020/08/13 - [백준/브루트 포스] - (c++)백준 14888번: 연산자 끼워넣기 (c++)백준 14888번: 연산자 끼워넣기 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘..

https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, �� www.acmicpc.net [풀이] 주어진 연산자를 나열하는 모든 경우에 대해 계산을 하고, 최소값과 최대값을 저장한다. #include #include #include //min,max using namespace std; int N; vectorA(11);//N개의 수 int op[4];//각 연산자의 개수 (0:+, 1:-, 2:*, 3:/) vectorv;..

https://www.acmicpc.net/problem/14225 14225번: 부분수열의 합 수열 S가 주어졌을 때, 수열 S의 부분 수열의 합으로 나올 수 없는 가장 작은 자연수를 구하는 프로그램을 작성하시오. 예를 들어, S = [5, 1, 2]인 경우에 1, 2, 3(=1+2), 5, 6(=1+5), 7(=2+5), 8(=1+2+5)을 만들 � www.acmicpc.net [풀이] 원소가 1개 이상인 모든 조합에 대해 원소값들의 합을 구하고, 만들 수 있는 자연수 i에 대해 canMake[i]를 true로 저장한다. 마지막에 1부터 시작하여 만들 수 없는 자연수가 나올 때까지 for문을 돌린다. #include #include using namespace std; int N;//수열 S의 크기 ..