완전탐색 5

프로그래머스 - 전력망을 둘로 나누기

문제링크문제요약n개(2 이 트리를 둘로 나누었을때 두개의 트리가 가지고있는 노드의 수를 최대한 비슷하게 짤랐을 때, 두 트리의 노드 수 차이를 출력하면된다. 풀이처음에는 규칙성을 찾아보려했지만, 트리의 특별한 형태가 정해져있지않아 규칙을 찾기가 쉽지않았다. 결국 완전탐색을통해 wires를 하나씩 제거해가며 노드의 수를 계산해주었다. 노드의 수를 계산하는건 dfs로 계산하였다.소스코드#include #include #include using namespace std;vector v[105];bool vist[105];int recursion(int cur) { int count = 1; vist[cur] = 1; for (const auto &e : v[cur]) { if (v..

Algorithm 2024.11.20

프로그래머스 - 소수찾기

문제링크문제요약숫자로 이루어진 문자열 number가 주어진다. 주어진 숫자 문자열로 만들 수 있는 모든 순열 조합에서 소수를 찾아 그 개수를 반환하면된다. 제약조건number의 길이는 1이상 7이하이다.number는 0부터 9까지의 숫자로 구성되어있다.풀이에라토스테네스의 체 알고리즘을 이용해서 1e8까지의 소수를 구한뒤,number를 dfs로 완전탐색을 돌리며 소수가 몇개인지 구하면된다.소스코드#include #include using namespace std;bool arr[10000000];int ans;bool vist[10];void primenum() { arr[0] = false; arr[1] = false; for (int i = 2; i

Algorithm 2024.11.19

프로그래머스 - 카펫

문제해결문제요약갈색 타일은 카펫의 외곽 부분을 차지하고, 노란색 타일은 내부를 자치한다.노란색 타일과 갈색 타일이 주어질때 가로와 세로의 길이를 반환하는 문제이다.풀이얻을 수 있는 정보를 종합해서 어떻게 풀어야할지 계획을 세워야했던 문제였다.노란타일 + 갈색타입 = width * height문제의 조건에 따라 width >= height 이다.중앙에는 노란타일이 있으니, (width - 2) * (height - 2) = yellow위 3가지 정보를 바탕으로 height를 통해 width를 얻고, height를 늘려가면서 조건에 만족하는 가로, 세로를 찾으면된다.소스코드#include #include using namespace std;/*중앙에 위치해야하는 노랑외곽에 위치해야하는 갈색노랑과 갈색 수를 ..

Algorithm 2024.11.17

프로그래머스 - 모의고사

문제링크문제요약수포자 1,2,3 은 다음과 같은 패턴을 반복한다.수포자 1 = [1, 2, 3, 4, 5 ...]수포자 2 = ['2, 1' , '2, 3' , '2, 4' , '2, 5' , ...]수포자 3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5 ...정답배열 answers 가 주어졌을때 수포자 1, 2, 3 중 가장 점수가 높은 사람을 리턴하면된다. 풀이 딱히 풀이라고 할것도 없이 완전탐색을 돌리면된다. answers를 0부터 answers.length()까지 돌리면서 수포자의 점수를 체크하면된다.  소스코드#include #include using namespace std;/*1번 - 12345 ...2번 - 21 22 23 24 25 ...3번 - 33 11 22 44 55 ...

Algorithm 2024.11.16

프로그래머스 - 모음사전

문제링크문제요약'A', 'E', 'I', 'O', 'U'이 글자로만 이루어진 최대길이 5자리짜리 단어사전이 있다. 'A' 단어가 단어장의 가장 처음에 나오고 그 다음엔 'AA', 'AAA', 'AAA', 'AAAA', 'AAAAA', 'AAAAE' ... 'UUUUU'로 이루어진 단어장이다. 입력으로 들어온 단어는 단어장의 몇번째인지를 출력하면 되는 문제이다.어떻게 풀어야 할까완전탐색을 통한 해결수학적 해결각 자리의 가중치를 미리 계산한다.주어진 단어의 각 자리에서 해당 가중치를 곱해 최종 위치를 계산한다.가중치 계산가중치 계산은 자리 수의 가중치를 통한 순서 계산 방법으로, 수열의 합을 이용한 간단한 등비수열의 합이다. 이 문제의 경우, 각 자리에 올 수 있는 문자가 5개 (A, E, I, O, U)이..

Algorithm 2024.11.03