본문 바로가기

728x90

백준

[백준] 17298 오큰수 / 자바(Java) 문제 https://www.acmicpc.net/problem/17298 17298번: 오큰수 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다. www.acmicpc.net 해설 오큰수는 수열에서 특정 숫자보다 오른쪽에 있는 수 중 큰 가장 가까운 수이다. 들어오는 값의 순서를 유지하고 오큰수가 정해진 수에 관여하지 않기 위해 stack을 사용한다. 앞에 있는 값부터 순서대로 stack에 넣으면 stack에는 값이 역순으로 들어가게 됩니다. 그러다 오큰수에 해당하는 stack의 peek값보다 큰 수가 들어온다면 stack에서 그 값을 pop해주고 오큰수로 배열에 저장해 주.. 더보기
[백준] 14501 퇴사 / 자바(Java) 문제 https://www.acmicpc.net/problem/14501 14501번: 퇴사 첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다. www.acmicpc.net 해설 상담이 매일 잡혀있고, 앞의 상담 여부가 뒤의 상담가능 여부를 정하기 때문에 각 일자별 최대 금액을 구하는 dp를 이용하여 문제를 해결하였다. dp[i]를 해당 일자의 최대 금액이라 한다면 점화식을 이와 같이 세울 수 있다 dp[i + t[i]] = max(dp[i + t[i]] , dp[i] + p[i]) 현재 i에서 상담일(t[i])를 더한 날의 최대 금액에서 오늘 일을 한 경우와 본래 있던 경우 중 최대값을 현재 최대값으로 넣어준다. 이때 dp배열의 크기는 N을 벗어나지 않으므로 조건을 추가해준다 if( i + t[i.. 더보기

728x90