본문 바로가기

분류 전체보기

(308)
[백준/C++] 1967번: 트리의 지름 문제 https://www.acmicpc.net/problem/1967 1967번: 트리의 지름 파일의 첫 번째 줄은 노드의 개수 n(1 ≤ n ≤ 10,000)이다. 둘째 줄부터 n-1개의 줄에 각 간선에 대한 정보가 들어온다. 간선에 대한 정보는 세 개의 정수로 이루어져 있다. 첫 번째 정수는 간선이 연 www.acmicpc.net 문제 요약 가중치가 있는 트리가 주어졌을 때, 트리의 지름을 출력한다. 트리의 지름이란, 트리에 존재하는 모든 경로들 중 가장 긴 것의 길이이다. 코드 #include #include #include #include #define MAX_N 500000 using namespace std; int n; bool visited[MAX_N + 1]; vector edges[M..
[백준/C++] 14003: 가장 긴 증가하는 부분 수열 5 문제 https://www.acmicpc.net/problem/14003 14003번: 가장 긴 증가하는 부분 수열 5 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (-1,000,000,000 ≤ Ai ≤ 1,000,000,000) www.acmicpc.net 문제 요약 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열과 그 길이를 출력한다. ex) 수열 A = {10, 20, 10, 30, 20, 50} 인 경우, 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50}이다. 코드 #include #include using namespace std; int n; vector arr, v,..
[백준/C++] 12015번: 가장 긴 증가하는 부분 수열 2 문제 https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 문제 요약 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열의 길이를 출력한다. ex) 수열 A = {10, 20, 10, 30, 20, 50} 인 경우, 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50}이다. 코드 #include #include using namespace std; int n; vector arr, res; // res에서 key보다 큰..
[백준/C++] 6236번: 용돈 관리 문제 https://www.acmicpc.net/problem/6236 6236번: 용돈 관리 현우는 용돈을 효율적으로 활용하기 위해 계획을 짜기로 하였다. 현우는 앞으로 N일 동안 자신이 사용할 금액을 계산하였고, 돈을 펑펑 쓰지 않기 위해 정확히 M번만 통장에서 돈을 빼서 쓰기로 www.acmicpc.net 문제 요약 앞으로 N일 동안 사용할 금액이 있을 때, 정확히 M번만 통장에서 K원을 인출할 수 있다. 이전에 통장에서 뺀 돈으로 하루를 보낼 수 있다면 그대로 사용하고, 모자라면 남은 금액을 통장에 넣고 다시 K원을 인출한다. M번을 맞추기 위해 남은 금액이 사용할 금액보다 많더라도 남은 금액을 통장에 넣고 다시 K원을 인출할 수 있다. 최소 금액 K를 출력한다. 코드 #include #inclu..
[백준/C++] 17179번: 케이크 자르기 문제 https://www.acmicpc.net/problem/17179 17179번: 케이크 자르기 첫 번째 줄에 자르는 횟수가 담긴 목록의 길이 N과 자를 수 있는 지점의 개수 M, 그리고 롤 케이크의 길이인 정수 L이 주어진다. (1 ≤ N ≤ M ≤ 1,000, 1 < L ≤ 4,000,000) 다음 M줄에 걸쳐 자를 수 있는 www.acmicpc.net 문제 요약 길이가 L인 롤 케이크가 있고, 이 케이크에는 자를 수 있는 지점이 M군데 존재한다. 자르는 횟수가 주어졌을 때, 가장 작은 조각의 길이의 최댓값을 출력한다. 코드 #include using namespace std; #define MAX 1000 int n, m, length; int point[MAX]; // 자를 수 있는 지점 저..
[백준/C++] 1261번: 알고스팟 문제 https://www.acmicpc.net/problem/1261 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 문제 요약 N × M 크기의 미로에서 (1, 1)에서 출발해 (N, M)까지 가기 위해 벽을 최소 몇 개 부수어야하는지 출력한다. 어떤 방에서 이동할 수 있는 방은 상하좌우로 인접한 빈 방이다. 코드 #include #include #include #include using namespace std; #define MAX 100 int n, m; int board[MAX..