Dynamic Programming 2

[BOJ] 2096번 내려가기 (C++)

문제 (https://www.acmicpc.net/problem/2096) 2096번: 내려가기 첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 숫자가 세 개씩 주어진다. 숫자는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 중의 하나가 된다. www.acmicpc.net DP + 슬라이딩 윈도우로 해결한 문제이다. 두 알고리즘 모두 취약해서...ㅎㅎ 다른 코드를 참고하여 풀었다. 크기가 3인 배열들 minArr, maxArr, minTmp, maxTmp을 사용했는데, minTmp, maxTmp는 현재 행 이전까지의 결과를 저장해둔 배열이다. - 첫 번째 행의 값들은 최솟값이자 최댓값이므로 4개의 배열에 모두 삽입해준다. - 첫 번째 행이 아닐 경우에는 minTmp, m..

ALGORITHM/BOJ 2022.01.19

[BOJ] 14501번 퇴사 (C++)

문제 링크 (https://www.acmicpc.net/problem/14501) 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net dp와 브루트포스로 풀 수 있는 문제 !! 나는 dp로 풀었다. n일을 일하며 얻을 수 있는 최대 수익을 구해야 하는데 상담이 가능하다고 해서 바로 진행하는 것이 아니라 그 뒤에 더 좋은 수익이 나는 상담이 있을 수도 있으니 이 점을 체크해야 한다. 나는 2xn 크기의 배열을 사용했는데 0행의 각 열은 그 날까지 얻을 수 있는 최대 수익을, 1행의 각 열은 그날 상담을 시작한다면 며칠이 걸리는지 넣어주었다. 1. 해당 날짜에 시작하는 상담이 남은 기간 동안 가능한 상담인지 (ex) N = 7인 경우, 6일에 잡힌 상담이..

ALGORITHM/BOJ 2021.10.09