본문 바로가기

분류 전체보기

(233)
[C++] 백준 11725번 - 트리의 부모 찾기 문제 11725번https://www.acmicpc.net/problem/11725 이번에는 그래프에 관한 문제를 풀어보려고 한다. 첫째 줄에 노드의 개수 n이 주어지고 둘째 줄부터 n-1개의 줄에 트리 상에서 연결된 두 정점이 주어지기 때문에 입력받고 벡터에 넣어줄 때 반복문을 0부터 n-2까지 반복할 수 있도록 해준다(예를 들어 7을 입력받으면 6번 반복해줌). 이때 양방향으로 연결되어 있으니까 반대인 경우도 벡터에 넣어줘야한다. 깊이 우선 탐색(dfs)을 이용하여 그래프를 탐색할 것이다. 깊이 우선 탐색이란 한 방향으로 갈 수 있을 때까지 계속 가다가 더 이상 갈 수 없게 된다면 다시 가장 가까운 갈림길로 돌아와서 해당 위치부터 다른 방향으로 다시 탐색을 진행하는 방법과 유사하다. 즉, 하나의 방향..
[C++] 백준 10101번 - 삼각형 외우기 문제 10101번https://www.acmicpc.net/problem/10101 이번 문제는 각 조건에 따라 다른 값을 출력해주도록 만들면 된다. #include using namespace std;int main() { int a, b, c; cin >> a >> b >> c; if (a == 60 && b == 60 && c == 60) { cout
[C++] 백준 1541번 - 잃어버린 괄호 문제 1541번https://www.acmicpc.net/problem/1541  식의 값을 최소로 만들기 위해서 +먼저 계산해준다.  기호가 들어온다면 -인지 아닌지 구분해서 sum에 계산을 해주고 temp를 비어준다. 여기서 string이기 때문에 int로 바꿔주기 위해 stoi()를 한다. 만약 -가 들어온다면 -여부를 판단해주는 mcheck를 true로 바꿔준다. 숫자가 들어온다면 temp에 숫자를 추가해준다. 그렇게 반복문을 다 돌고 계산이 끝나면 sum을 출력한다. #include #include using namespace std;int main() { string str, temp; cin >> str; int sum = 0; bool mcheck = false; //-여부 for (int..
[C++] 백준 2742번 - 기찍 N 문제 2742번https://www.acmicpc.net/problem/2742 오늘은 시간이 너무 늦어서 간단한 문제를 풀었다.배열에 넣어서 풀려고 하다가 생각해보니까 그럴 필요가 없다는 것을 깨닫고 N부터 1까지 차례로 출력해주었다. #include using namespace std;int main() { int n; cin >> n; for (int i = n; i > 0; i--) { cout
[C++] 백준 11047번 - 동전 0 문제 11047번https://www.acmicpc.net/problem/11047 n의 최댓값이 10이기 때문에 크기가 11인 배열 하나를 만들어준다. 입력값들을 배열에 차례대로 넣어주고, 동전 개수를 최소로 하기 위해 가장 큰 가치를 가진 맨 뒤부터 반복문을 돌려준다.  그리고 k에서 동전들을 빼가며 0보다 크거나 같다면 계속해서 반복해준다. 그 안에서는 개수를 count해주고 k의 값을 줄여나간다. 그렇게 반복문을 마치고 sum을 출력하면 그것이 k원을 만드는데 필요한 동전 개수의 최솟값이다.#include using namespace std;int main() { int n, k, sum = 0; int num[11]; cin >> n >> k; for (int i = 0; i > num[i]; ..
[C++] 백준 2346번 - 풍선 터뜨리기 문제 2346번https://www.acmicpc.net/problem/2346 몇번째인지와 이동해야할 수를 pair로 해서 덱에 저장시킨다. 그리고 덱이 빌 때까지 반복해준다. 일단 맨 앞에 있는 숫자를 출력해주고 pop해준다. 해당 수의 이동해야할 수가 양수인지 음수인지 확인하여 각각 수행해준다. 앞에서 이미 출력하고 pop을 했기 때문에 오른쪽으로 한번 이동된다. 그러므로 양수라면 (원래 이동해야되는 수 - 1)번 반복해준다. 양수는 앞의 숫자를 뒤로 이동시키며 맨 앞에 다음 숫자가 오도록 만들면 되고 음수는 반대로 뒤의 숫자를 앞으로 이동시키면 다음 숫자가 맨 앞에 오도록 만든다. #include #include using namespace std;int main() { int n; deque >..
[C++] 백준 28279번 - 덱 2 문제 28279번https://www.acmicpc.net/problem/28279 그냥 썼더니 시간 초과가 나와서 아래의 코드를 추가해줬다. ios::sync_with_stdio(false); cin.tie(NULL); 이번에는 if문이 아니라 switch문을 사용했다. 입력값이 뭔지에 따라 해당 case의 내용을 수행해준다. 그리고 각 case가 끝날 때마다 break한다. (break를 안 하면 다음 case를 수행하게 됨)  덱은 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료 구조이기 때문에 push와 pop을 할 때 front에서 할 건지 back에서 할 건지, 그에 맞는 함수를 사용해야 한다.#include #include using namespace std;int main() { ios::sy..
[C++] 백준 11866번 - 요세푸스 문제 0 문제 11866번https://www.acmicpc.net/problem/11866 큐에 1부터 n까지의 수를 넣고 k번째가 되기 전인 k-1까지 반복하여 숫자를 뒤로 넣고 앞 숫자는 버려준다. k번째가 되면 해당 값을 출력해주고 만약 그 수가 마지막 수라면 ,를 출력해준다. 그리고 마지막에 pop을 통해 출력한 숫자를 버려준다. #include #include using namespace std;int main() { int n, k; cin >> n >> k; queue q; for (int i = 1; i 0) { for (int i = 0; i "; return 0;}