본문 바로가기

C++13

[2302] 극장좌석 - c++ https://www.acmicpc.net/problem/2302 2302번: 극장 좌석 주어진 조건을 만족하면서 사람들이 좌석에 앉을 수 있는 방법의 가짓수를 출력한다. 방법의 가짓수는 2,000,000,000을 넘지 않는다. (2,000,000,000 < 231-1) www.acmicpc.net 정말 미세하게 DP에 대한 감이 잡히기 시작한 것 같다. DP문제라는 것을 알고 풀긴 했지만! 점화식을 찾아냈다는 것이 뿌듯했다. 하지만 점화식을 찾아낸 것 그뿐이고 그다음을 어떻게 해야 할지 몰라 답을 찾아서 봤다....ㅎ 풀이 먼저 점화식을 찾아낸 방법은 하나하나 다 써봤다. 이것만큼 좋은 게 있을까? $$\Large d[i] \space =\space d[i-1] \space + \space d[i-2].. 2023. 6. 17.
[14002] 가장 긴 증가하는 부분 수열 4 - c++ https://www.acmicpc.net/problem/14002 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 일단 예전에 풀었던 가장 긴 증가하는 부분 수열을 구하는 알고리즘을 사용하는 것이라는 건 자명한 사실! 하지만 여기선 추가 된것이 있었으니, 그 경로까지 구해야 하는 것이다. 이슈다 응용은 못한다.... 일단 당연히 문제에 대해 고민을 해보고 답을 봤다. 풀이 아이디어 가장 긴 배열을 구하며 경로도 추가 적으로 pr.. 2023. 6. 12.
[2240]자두 나무 - c++ https://www.acmicpc.net/problem/2240 2240번: 자두나무 자두는 자두를 좋아한다. 그래서 집에 자두나무를 심어두고, 여기서 열리는 자두를 먹고는 한다. 하지만 자두는 키가 작아서 자두를 따먹지는 못하고, 자두가 떨어질 때까지 기다린 다음에 떨어 www.acmicpc.net 진짜 정말..... 너무 어려웠다 답을 봐도 왜 이렇게 풀었는지를 몰라 계속 봤고 지금은 조금 이해한 상태다 DP 진짜 너무 어렵다.... 에효.... 아이디어 먼저 몇 가지 가능성을 보도록 하자 1. 현재 나의 위치에 자두가 떨어진다 a. 가만히 있고 자두를 잡는다 2. 현재 나와 다른 위치에 자두가 떨어진다 a. 다른 나무로 이동하여 자두를 잡는다 b. 가만히 있으며, 떨어지는 것을 지켜본다 코드로 구.. 2023. 6. 10.
[5904]Moo 게임 - c++ 첫 번째 아이디어 일단 기본적인 재귀 형태로 풀려고 시도했다. 당연히 안될 걸 알고 있었지만 일단 시도 했으며 결과는 당연히 메모리 초과 CODE //Moo 게임 #include using namespace std; void init(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); } //횟수 int n; int tot = 0; bool isFine = false; void isMoo(bool m2o){ //true = m, false = o if(m2o && tot == n){ cout n; moo(n/2); return 0; } 이렇게 해본 후 문제점이 뭔지를 찾아 나갔다. 1. 재귀를 몇번 반복해야 하는 가를 알려줘야 한다. 2. 그저 .. 2023. 6. 6.
14502 - c++ 요약 바이러스가 연구실에 퍼진다 무조건 벽을 3개 세워서 최대 안전영역을 확보하는 것 아이디어 벽을 세울 수 있는 모든 경우의 수를 계산한다. 최대한 적은 계산을 하기 위해 조합을 사용한다. 즉 입력받으며 바이러스를 저장, 빈칸도 따로따로 저장한다. 그리고 조합을 사용해야 하므로 do while에 next_permutation을 사용한다. 이제 각각 벽을 세울 수 있는 곳에 벽을 세우고 난 후 바이러스를 전파 시킨 다음 안전영역을 계산한다. CODE #include #define X first #define Y second using namespace std; void init(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); } int n, .. 2023. 5. 31.
13460 - c++ 요약 판을 기울이며 빨간 구슬을 구멍으로 탈출시켜야 한다 그런데 파란 구슬도 동시에 움직이며 파란 구슬이 구멍으로 탈출하면 실패 동시에 나와도 실패 위의 문제 구문에서 중요한 문장이 있다면 기울이는 동작을 그만하는 것은 더 이상 구슬이 움직이지 않을 때까지이다. 구슬이 벽에 닿았을 때 기울이는 것을 멈춘다. 즉 끝까지 간다 라는 말이다. 중간에 멈추는 것이 없다. 첫 아이디어 먼저 bfs, dfs 사용을 생각했다. bfs를 사용하면 현재 갈 수 있는 방향으로 끝까지 간다음 visit 배열에 시간을 저장하는 식으로 하려고 했으나 파란 구슬까지 함께 어떻게 같이 동시에 움직여야 할지 감이 오지 않았다. 또 파란 구슬과 빨간 구슬이 겹쳤을 때, 이런 상황을 대체 어떻게 처리해야 할지 감이 오지 않았다. 그래서.. 2023. 5. 31.