본문 바로가기

Algorithm Problems

(212)
[백준/C++] 14651번: 걷다보니 신천역 삼 (Large) 문제 https://www.acmicpc.net/problem/14651 14651번: 걷다보니 신천역 삼 (Large) 욱제는 ‘삼’이란 음절을 참 좋아한다. 인삼, 홍삼, 해삼, 삼성, 이춘삼(李春森), 삼식이, 삼시세끼, ㄴㄴ 그거 안 삼, 삼과 죽음, 알았삼, 걷다보니 신천역 삼, 그리고 특히 일이삼을 좋아한다. www.acmicpc.net 문제 요약 상신은 '삼'이란 음절을 참 좋아한다. 인삼, 홍삼, 해삼, 삼성, 이춘삼, 삼식이, 삼시세끼, ㄴㄴ 그거 안삼, 삼과 죽음, 알았삼, 걷다보니 신천역 삼, 그리고 특히 일이삼을 좋아한다. 그래서 상신은 3을 가지고 놀아보기로 했삼. 3개 숫자(0, 1, 2)만 가지고 N자리 3의 배수를 만들어 보삼. 만드는 배수는 자연수 이삼. 0으로 시작하는 수..
[백준/C++] 1504번: 특정한 최단 경로 문제 https://www.acmicpc.net/problem/1504 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 문제 요약 1번 정점부터 N번 정점까지 존재하는 방향성이 없는 그래프가 주어졌을 때, 1번 정점에서 N번 정점으로 최단 거리를 출력한다. 단, 임의로 주어진 두 정점을 반드시 통과해야 한다. 한 번 이동했던 정점 또는 간선을 다시 이동할 수 있다. 코드 #include #include #include #include #include #include..
[백준/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..