algorithm

https://www.acmicpc.net/problem/10844 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제를 처음 봤을때 DFS 쓰는 문제인가? 했는데 DFS를 사용해도 답은 나오겠지만 너무 가짓수가 많아서 시간초과에 걸릴게 뻔했다. 숫자들이 규칙이 없는것이 아니라 1차이라는 규칙이 있으므로 그냥 Dp썼다. Dp를 점점 하면서 느낀거지만 문제가 다 똑같다. 물론 아직 Dp애기 수준이라 실버1 언저리 문제만 풀지만, 현재까지 느낀바로는 그렇다. 문제 풀이는 각 자릿수를 정해야하는데 첫번째 자릿수에는 0이 올수 없고, 앞자릿수에 영향을 받지 않으므로 미리 세팅을 해준다. dp[0][0]을 제외하고 나머지를 모두 1..
It's a one of the assignments of the Data Structure. There are several condition of assignment. 1. Stack must be implemented using an Array. 2. Finding maze program must be implimented using stack that I implement Actually I've implemented finding maze and similar things on baekjoon site that is famous online judge site of korean. So, these assignments are very easy to me. To implement Finding m..
https://www.acmicpc.net/problem/2156 2156번: 포도주 시식 효주는 포도주 시식회에 갔다. 그 곳에 갔더니, 테이블 위에 다양한 포도주가 들어있는 포도주 잔이 일렬로 놓여 있었다. 효주는 포도주 시식을 하려고 하는데, 여기에는 다음과 같은 두 가지 규 www.acmicpc.net 문제는 3연속 연결되어 있는 포도주를 마실수 없다는 것이다. 따라서 가능한 경우를 생각해보면 현재 위치를 i라고 했을 때 1. 앞 최댓값(dp[i-1])을 그대로 가져가는 경우 2. 앞앞 위치의 최댓값에 현재 포도주를 더하는 경우(dp[i-2] + wine[i]) 3. 앞앞앞 위치의 최댓값에 이전 포도주와 현재 포도주를 더하는 경우(dp[i-3] + wine[i-1] + wine[i]) 위의 세가지..
https://www.acmicpc.net/problem/1912 1912번: 연속합 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 유형은 Dp라고 되어있지만 내가 아직 Dp를 잘 몰라서 그런지 내가 Dp로 풀었는지 잘 모르겠다. 문제를 읽으면 Dp냄새가 술술 나긴 하는데 그냥 문제 읽고 구현했는데 풀렸다. 코드를 보면 배열 앞에서부터 합을 저장해 나가다가 음수로 빠지면 합을 0으로 바꾼다. 그리고 합이 최대값보다 커지면 최대값을 합으로 바꿔준다. 위의 과정을 배열을 한번 훑으면서 진행하면 연속합중에서 가장 큰 합이 나온다. 코드는..
https://www.acmicpc.net/problem/1932 1932번: 정수 삼각형 첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다. www.acmicpc.net 어제 포스팅 했던 RGB거리 문제와 상당히 비슷한 문제이다. 다이나믹 프로그래밍을 이용하는 문제로 삼각형 위에서부터 최대가 되도록 내려와야한다. 잘못하면 큰수만 따라가면 되는거 아닌가? 라고 생각할 수 있는데 작은 수로 내려가다가 도중에 압도적으로 큰수가 나오면 그 경로가 가장 큰 경우가 되기 때문에 큰수만 따라가면 안된다. 결국 다 해봐야 한다는 뜻이다. Dp == memoization + bruteforce 따라서 완전탐색도 포함되어 있기 때문에 문제를 풀때 DP를..
https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 가장 최소 비용을 구해야 하므로, 최소~ 하면 그리디나 그래프 탐색이 떠오르지만 앞의 두 알고리즘으로 코드를 짜는게 불가능하다.(가능할 수도 있겠지만 너무 산으로 간다는 뜻) 흔히 DP라고 불리는 다이나믹 프로그래밍이라고 불리는 알고리즘을 사용해야하는 문제로 DP는 그리디나, 수학문제 처럼 정해진 알고리즘을 사용하면 딱 풀리는 알고리즘이 아니라 생각이 필요한 알고리즘이다. D..
요플레에
'algorithm' 카테고리의 글 목록 (9 Page)