목록백준/완전 탐색 (5)
Study hard

https://www.acmicpc.net/problem/10971 10971번: 외판원 순회 2 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 10) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.net [풀이] 가능한 모든 경로에 대한 비용들을 비교하여 최솟값을 구하였다. 방문하는 도시의 순서에 따라 최종 비용이 달라지므로 순열을 사용하였다. 마지막으로 방문하는 도시에서 출발한 도시로 갈 수 있는지 확인해줘야 한다. 모든 도시가 출발지점이 될 수 있다. #include #include //min using namespace std; int N; int..

https://www.acmicpc.net/problem/10819 10819번: 차이를 최대로 첫째 줄에 N (3 ≤ N ≤ 8)이 주어진다. 둘째 줄에는 배열 A에 들어있는 정수가 주어진다. 배열에 들어있는 정수는 -100보다 크거나 같고, 100보다 작거나 같다. www.acmicpc.net [풀이] N개의 정수로 이루어진 모든 순열을 식에 대입하여 그 결과값을 비교하여 최댓값을 구하였다. (Brute force) 수의 순서에 따라 결과값이 달라지므로 순열을 이용하였다. #include #include #include //max #include //abs using namespace std; int N; int A[9]; vectorv; int Max = -1; bool Select[9]; //식에..

https://www.acmicpc.net/problem/1451 1451번: 직사각형으로 나누기 첫째 줄에 직사각형의 세로 크기 N과 가로 크기 M이 주어진다. 둘째 줄부터 직사각형에 들어가는 수가 가장 윗 줄부터 한 줄에 하나씩 M개의 수가 주어진다. N과 M은 100보다 작거나 같은 자연수이� www.acmicpc.net [풀이] 직사각형을 세 개의 직사각형으로 나누는 경우는 아래와 같이 6가지가 있다 세 개의 직사각형은 모두 같은 크기일 필요가 없으므로 위의 모양들 각각으로 자르는 경우 안에서도 가능한 모든 경우의 수를 찾아봐야 한다. #include #include //max #include //scanf using namespace std; int N, M; int Num[101][101]; ..

https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼�� www.acmicpc.net [풀이] brute force로 풀었다. 1. 0~INF 모든 수 중 고장난 버튼을 누르지 않아도 되고, 이동하려고 하는 채널과 가장 가까운 수를 찾기 2. 1)에서 찾은 수의 길이+이동하려고 하는 채널과의 차이와 현재 채널인 100과 이동하려고 하는 채널의 차이를 비교했을 때 더 작은 수를 출력 누를 수 있는 수인지 확인할 때 0인 경우를 따로 처리해 줘야 한다. ∵ whil..

https://www.acmicpc.net/problem/1476 1476번: 날짜 계산 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타�� www.acmicpc.net [풀이] 1 1 1 : 1 1 16 16 : 16 1 2 3 : 5266 15 28 19 : 7980 위 예제들을 보면, year - E = 15의 배수, year - S = 28의 배수, year - M = 19의 배수인 공통된 year을 찾는 문제라는 것을 알 수 있다. #include using namespace std; int E, S, M; void getYear() { int year =..