목록전체 글 (308)
나만의 작은 도서관
난이도 : 실버 1 문제 요약 설명 이진 트리를 입력받아 전위 순회(preorder traversal), 중위 순회(inorder traversal), 후위 순회(postorder traversal)한 결과를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파벳 대문자로 매겨지며, 항상 A가 루트 노드가 된다. 자식 노드가 없는 경우에는 .으로 표현한다. 입력 예제 // input 7 A B C B D . C E F E . . F . G D . . G . . // ans ABDCEFG DBAECFG DBEGFCA T..

문제 요약 설명 일렬로 세워진 나무들이 있다. 각 나무들은 높이가 제각각이며, 해당 나무들을 높이 H 이상인 부분들만 잘라 길이 M 이상의 나무를 얻으려고 한다. M 이상의 나무를 얻을 수 있는 H의 최대값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 나무의 수 N과 얻고자 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보다 크거나 같기 때문에, 필요한 나무를 항상 가져갈 수 있다. 높이는 1,000,000,000보다 작거나 같은 양의 정수 또는 0이다. 입력 예제 4 7 20 15 10 17 Tips 나무의 수가 최대 100만개나 되고, 가능한 나무의 높이가 매우 높기 때..
문제설명 N개의 수로 된 수열 A가 있다. 이 수열의 i번째 부터 j번째 까지의 수를 더했을 때 M이 되는 경우의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N, M이 차례로 주어진다. (단, N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)) 둘째 줄에는 N개의 수가 차례로 주어진다. 주어지는 수는 30000이하의 자연수이다. 입력 예제 4 2 1 1 1 1 Tips 구하고자 하는 수들의 합은 연속적인 수들의 합이다. 주어진 수열 A에 있는 모든 수들을 조합하여 M이 되는 경우를 구하는 게 아니다. 수열의 수들이 자연수이기 때문에 부분 수열에 수를 추가하면 항상 값이 증가한다. 따라서, i 번째로 시작하는 부분 수열에서 수의 합이 M이라면 그 뒤로 수를 추가해도 수의 ..
문제설명 시험을 치루는 응시자들이 각 시험장에 있다. 응시자를 감시하기 위해 총감독관과 부감독관은 시험장에 배치되어야 한다. 이 때, 총감독관은 각 시험장에 항상 1명이 있어야 하며, 부감독관은 여럿이 있어도, 없어도 된다. 총감독관은 B명을 감시할 수 있고, 부감독관은 C명을 감시할 수 있다. 모든 응시자들을 감시하는데 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험장의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 각 시험장에 있는 응시자의 수 Ai (1 ≤ Ai ≤ 1,000,000)가 주어진다. 셋째 줄에는 B와 C가 주어진다. (1 ≤ B, C ≤ 1,000,000) 입력 예제 3 3 4 5 2 2 Tips 1. 본감독관은 항상 시험장에 한 ..
문제 설명 괄호로만 구성되어 있는 문자열을 PS(Parenthesis String)라 부르며, 모든 괄호가 짝을 이루는 문자열을 VPS(Valid PS)라고 부른다. 입력으로 주어진 PS가 VPS인지 판단하여 YES 또는 NO를 출력해야한다. Tip) 왼쪽부터 순차적으로 문자를 탐색할 때, VPS는 어느 순간에서든 왼쪽 괄호 개수가 많거나 같다. #include #include using namespace std; /// /// 문자열이 VPS인지 판단한다. /// /// 판단할 문자열 /// VPS 판단 결과 bool isVPS(string str) { int cnt = 0; for (int i = 0; i < str.length(); i++) { if (str[i] == '(') cnt++; else..
여러가지 프로그래밍 언어를 배우다 보면 문자열에 대한 의심이 많아진다. 어떤 언어는 같고, 어떤 언어는 같지 않고... 언어에 따라 달라지니 문자열 판정은 늘 헷갈리는 문제이다. 이 글은 C++에서 서로다른 변수가 같은 문자열을 가지면 같은 판정인지 실험해본 내용을 담고있다. #include #include using namespace std; int main(void) { string str = "Hello"; string str2 = "Hello"; if (str == "Hello") cout