Algorithm/C++ - BOJ 61

BOJ/백준 - 1260 DFS와 BFS

DFS - 깊이 우선 탐색, - 모든 노드 맹목적 탐색, - 스택으로 구현하는데 굳이 스택으로 하지 않고 재귀로 해도 자연스럽게 스택처럼 사용 가능.(스택으로 굴러가서) BFS - 너비 우선 탐색 - 최단경로, 미로찾기 - FIFO, Queue 사용. * dfs나 bfs모두 방문했는지 안했는지 체크하는 걸 잊지 말자. 구현은 아랫쪽 주석에 자세히 적어놓았다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 6..

Algorithm/C++ - BOJ 2021.02.26

BOJ/백준 - 1449 수리공 항승 C++

처음에는 이제.. 내림차순으로 정렬하고 뺀 결과만큼 붙이는걸로 풀었었다. 근데 이제 그 생각은 실패를 곁들인.. 간단히 생각해서 풀면 되는 문제였다. 1. 오름차순으로 정렬한다 2. 테이프의 길이만큼 테이프를 붙인다. 2번의 과정을 v.size()만큼 반복하는데, 대신 fix배열을 선언하여 붙였는지 안붙였는지 표시하면 된다. 만약에 현재 위치(pos)에서 테이프를 붙이지 않았다면 테이프 길이만큼 붙이면 된다. 문제에서 겹쳐도 된다고 했는데 굳이 그럴 필요는 없다 왜냐면 일단 길게 붙여야 최솟값을 만들 수 있으니까 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 ..

Algorithm/C++ - BOJ 2021.02.25

BOJ/백준 - 15903 카드 합체 놀이 C++

1. 가장 작은 점수를 만들어야하므로, 입력받은 카드에 쓰여진 수들(arr)을 정렬한다. 2. 정렬한 후 첫번째, 두번째 카드를 더하여 대입해준다. 3. M번 반복 간단히 끝낼 수 있었다! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 #include #include #include using namespace std; int main(void) { cout.tie(NULL); cin.tie(NULL); ios_base::sync_with_stdio(false); vector arr; int N, M; cin >> N >> M; for (int i = 0; i > tmp; a..

Algorithm/C++ - BOJ 2021.02.23

BOJ/백준 - 16953 A → B C++

A에서 B로 만들지 않고 B에서 A로 만드는 걸 생각했다. 우선 cnt=1로 초기화시켜주고(왜냐면 while에서 tmp가 a와 같으면 종료하기 때문!) 2를 나눠서 나머지가 0이라면 2를 나누고, 10을 나눠서 나머지가 1이 되면 1을 빼주고 10을 나눠준다. 만약 이도 저도 아니라면 만들 수 없다는 것이므로 break, 그대로 cnt를 세서 출력시켜주면 끝! 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include #include using namespace std; int main(void) { cout.tie(NULL); cin.tie(NULL); ios_base::sync_with_s..

Algorithm/C++ - BOJ 2021.02.18

BOJ/백준 - 4949 균형잡힌 세상 C++

9012번 괄호문제를 풀고 넘어왔다면 수월한 문제. 각 괄호마다 처리해주면 쉽게 문제를 풀 수 있다. 여기서 string str; getline(cin, str); 로 getline을 사용하는데, 한줄씩 받는다는 의미이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 #include #include #include #include using namespace std; int main(void) { cout.tie(NULL); cin.tie(NULL); ios_base::sync_with_stdio(f..

Algorithm/C++ - BOJ 2021.02.18

BOJ/백준 - 12865 평범한 배낭 C++

이해하고 보니까 쉬웠는데 왜 이해를 못했는지 모르겠다... 다음에 다시 풀어봐야지 설명은 주석에 따로 달아놓았다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 #include #include #include using namespace std; int w[100001]; int v[100001]; int dp[101][100001]; int main(void) { cout.tie(NULL); cin.tie(NULL); ios_base::sync_with_stdio(false); int N, K; int result = 0; cin >> N >> K..

Algorithm/C++ - BOJ 2021.02.15

BOJ/백준 - 1912 연속합 C++

연속합!! 연속으로 있는 수들 중 합이 제일 큰 것을 고르는 문제이다. dp배열에 i번째까지 연속으로 더했을 때 가장 큰 값을 고른다. dp[i]는 i번째 수 까지의 최대 합. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include #include using namespace std; int arr[100001]; int dp[100001]; int result; int main(void) { cin.tie(NULL); ios_base::sync_with_stdio(false); int N; cin >> N; for (int i = 0; i > arr[i]; } dp[0] = arr[0];..

Algorithm/C++ - BOJ 2021.02.15