목록2022/04/26 (3)
Hey Tech
📝 문제 https://www.acmicpc.net/problem/14888 14888번: 연산자 끼워넣기 첫째 줄에 수의 개수 N(2 ≤ N ≤ 11)가 주어진다. 둘째 줄에는 A1, A2, ..., AN이 주어진다. (1 ≤ Ai ≤ 100) 셋째 줄에는 합이 N-1인 4개의 정수가 주어지는데, 차례대로 덧셈(+)의 개수, 뺄셈(-)의 개수, www.acmicpc.net 💡 접근법 DFS 알고리즘을 활용하여 문제를 해결하였습니다. \(N\)개의 숫자의 순서는 고정입니다. 따라서 DFS 알고리즘으로 모든 연산자 조합으로 연산을 수행하고 연산 결괏값의 최솟값, 최댓값을 구하면 됩니다. 💻 코드 1) 전체 코드 import sys; input = sys.stdin.readline def solve(i, r..
📝 문제 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 💡 접근법 다이나믹프로그래밍(DP)을 활용하여 해결하였습니다. DFS 알고리즘으로도 해결 가능합니다. 이와 관련한 해설은 이곳을 참고해 주세요. DP를 활용한 풀이는 다음과 같습니다. 저는 근무 가능일이 아닌 퇴사일로부터 근무가 가능한 첫 날까지 역순으로 근무 선택일에 따른 이익을 계산하였습니다. 즉, 퇴사일로부터 \(i\)번째까지 근무한 경우 이익은 \((i+1)\)까지 근무한 경우의 이익과 \((i+t)\)까지 근무한 경우의 이익 중 최댓값을 고르도록 로직을 작성하였습니다. 만일 해당 일에 근무하지 않으면 \(i\)번째 ..
📝 문제 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 💡 접근법 DFS 알고리즘으로 문제를 해결하였습니다. 다이나믹 프로그래밍(DP)로도 문제 해결이 가능합니다. DP 관련 풀이는 이곳을 참고해 주시고, 본 포스팅에서는 DFS 기반 풀이만 공유합니다. 문제 풀이의 핵심은 상담 수수료는 낮은데 상담 소요일이 긴 근무일은 근무를 하지 않도록 하는 것입니다. 예를 들어, 근무 가능일이 \(4\)일 남았고 상담 수수료와 소요일이 아래 표와 같이 주어졌다고 가정해 보겠습니다. 근무일 Day 1 Day 2 Day 3 Day 4 상담 수수료 20 30 40 50 상담 소요일 2 3 4 5 ..