Computer Science/C++ 38

백준 C++ | #20 BOJ10610 백준 30 C++ 문제 풀이

10610번: 30 (acmicpc.net) 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 1. 입력값이 10^5 개의 숫자까지 들어올 수 있기 때문에 int로는 안된다. string을 이용해서 입력받는 것으로 수정했다. 2. 만약 n에 0이 없으면 탈락, 개별 숫자의 합이 3이 아니면 탈락을 통과하고 나면, 3. 약수가 30인 수가 존재하는 것이므로, 내림차순으로 정렬해서 가장 큰 숫자를 출력해준다. #include #include #include #include #include int main() { std..

백준 C++ | #19 BOJ2875 대회 or 인턴 C++ 문제 풀이

2875번: 대회 or 인턴 (acmicpc.net) 2875번: 대회 or 인턴 첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N), www.acmicpc.net 동전 문제와 거의 비슷하지만, n, m, 인턴십 인원 k의 경곗값을 모두 고려해주어야 했다. #include int main() { int n, m, k, count=0; std::cin >> n >> m >> k; int limit = (n + m - k); while (true) { if ((n

백준 C++ | #18 BOJ11047 동전 0 C++ 문제 풀이

11047번: 동전 0 (acmicpc.net) 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 그리디 알고리즘 예제로 푼 문제다. 그리디 알고리즘에서 가장 유명한 잔돈 문제의 입출력 형태를 살짝 바꾼 문제였다. 그리디 알고리즘은 제일 간단한 것이라 그런가, 알고리즘의 실체가 뭔지를 모르겠다. 이 문제들은 '걍 푼다' 아닌가..? #include #include #include int main() { int n, k; std::cin >> n >>..

백준 C++ | #17 BOJ5585 거스름돈 C++ 문제 풀이

5585번: 거스름돈 (acmicpc.net) 5585번: 거스름돈 타로는 자주 JOI잡화점에서 물건을 산다. JOI잡화점에는 잔돈으로 500엔, 100엔, 50엔, 10엔, 5엔, 1엔이 충분히 있고, 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 타로가 JOI잡화점에서 물건을 사 www.acmicpc.net #include using namespace std; int main() { int money; cin>>money; int remain=1000-money; int count=0; count=remain/500+(remain%500)/100+(remain%100)/50+(remain%50)/10+(remain%10)/5+(remain%5)/1; cout left; left = 1000 - le..

백준 C++ | #16 BOJ10828 스택 C++ 문제 풀이

10828번: 스택 (acmicpc.net) 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 문제는 간단했다. N개의 입력이 주어지면, 이를 스택 매소드로 변환하여 그 결과를 출력해주면 되었다. 구현은 금방 했는데 시간 초과가 났다. 아마도 std::cin, cout 때문인 것 같아 cstring 헤더를 포함시켜 scanf로 수정해주었다. #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include i..

백준 C++ | #15 BOJ9012 괄호 C++ 문제 풀이

9012번: 괄호 (acmicpc.net) 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net c++의 stack STL을 이용해서 푸는 문제였다. 입력 문자열을 받은 뒤에, 문자열을 하나씩 순회하면서 스택을 이용해서 괄호 열기(와 괄호 닫기)의 짝을 맞추었다. 문자가 (라면 스택에 Push하고 문자가 )이면 스택에서 Pop해준다. 만약 스택에서 Pop할 것이 없다면(스택이 비어있다면), 이번 괄호는 NO인 것이다. 문자열을 모두 처리한 순간에 스택이 비어있다면(모두 짝이 맞았다면)..

백준 C++ | #14 BOJ1927 최소 힙 C++ 문제 풀이

1927번: 최소 힙 (acmicpc.net) 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0 www.acmicpc.net 문제 자체는 간단하다. x개의 정수를 받아서 x가 자연수일 때에는 x를 배열에 저장해두고, x가 0일 때는 배열의 최댓값을 출력한 뒤에 그 값을 삭제해주면 된다. 처음에는 최소 힙을 사용하지 않고 벡터를 이용해서 구현했다. 그랬더니 시간 초과가 발생해서 queue의 priority queue를 이용해서 구현했으나 그래도 시간초과가 나서 결국 std::cin, cout 대신 scanf, printf..

백준 C++ | #13 BOJ1436 영화감독 숌 C++ 문제 풀이

1436번: 영화감독 숌 (acmicpc.net) 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 666이 들어가는 N번째 작은 수를 찾는 게 너무 어려워서 그냥 666부터 시작해서 1씩 키워가면서 노가다로 찾기로 했다(tmp++;) #include #include int main() { int n; std::cin >> n; int tmp=666; while (true) { // tmp에 한번이라도 666이 등장한다면 if (std::to_string(tmp).find("666") != std::strin..

백준 C++ | #12 BOJ1110 더하기 사이클 C++ 문제 풀이

1110번: 더하기 사이클 (acmicpc.net) 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net #include int main() { // 첫째 줄에 N이 주어진다. int n; std::cin >> n; // 처음에 주어진 수의 가장 오른쪽 자리 수와 // 구한 합의 가장 오른쪽 자리 수를 이어 붙여 새로운 수를 만들 수 있다. // 몇 번만에 원래 수로 돌아올 수 있을까? int tmp = n; int next = -1, trial = 0; while (next != n) { // 각 ..

백준 C++ | #11 BOJ1966 프린터 큐 C++ 문제 풀이

1966번: 프린터 큐 (acmicpc.net) 1966번: 프린터 큐 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 www.acmicpc.net 컴파일 에러가 자꾸 났는데 알고보니 #include 을 안하고 std::sort를 써서 그런 거였다. #include #include #include #include #include int main() { int testcase; std::cin >> testcase; std::vector answer; for (int i = 0; i < testcase; i++) { // 문서의 개수 n // 출력 순서(우선순위 큐..