https://www.acmicpc.net/problem/15486
15486번: 퇴사 2
첫째 줄에 N (1 ≤ N ≤ 1,500,000)이 주어진다. 둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 50, 1 ≤ Pi ≤ 1,000)
www.acmicpc.net
풀이
문제를 보았을 때 알 수 있는 힌트
일자와 금액이 담아 있는 리스트를 만들고 뒤에서 부터 계산하는 식으로 풀면 쉽게 풀 수 있다.
먼저 값을 초과하는 것을 0으로 변경 시키는 작업을 해주었다. 굳이 안해도 될 수 있지만 오류가 날수 있을것이라고 판단하여 없애주었다.
이후 뒤에서부터 현재값+이후 시간 값과 이전 값을 비교해서 큰값을 현재 값에 넣어 주면서 진행하면 n_list[0] 번째에 원하는 값을 얻을 수 있다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.Array;
import java.util.Arrays;
public class Main {
static int n;
static int n_list[][];
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n = Integer.parseInt(br.readLine());
n_list = new int[n+1][2];
for (int i = 0; i < n; i++) {
String[] temp = br.readLine().split(" ");
n_list[i][0]= Integer.parseInt(temp[0]);
n_list[i][1]= Integer.parseInt(temp[1]);
}
for (int i = 0; i < n; i++) {
if(n_list[n-1-i][0]>i+1) {
n_list[n-1-i][0] = 0;
n_list[n-1-i][1] = 0;
}
}
// for (int[] i : n_list) {
// System.out.println(Arrays.toString(i));
// }
// System.out.println();
for (int i = 1; i < n; i++) {
int time = n_list[n-1-i][0];
if((n_list[n-1-i+time][1]+n_list[n-1-i][1])>n_list[n-1-i+1][1]) {
n_list[n-1-i][1] = n_list[n-1-i+time][1]+n_list[n-1-i][1];
}
else {
n_list[n-1-i][1] = n_list[n-1-i+1][1];
}
}
// for (int[] i : n_list) {
// System.out.println(Arrays.toString(i));
// }
// System.out.println();
System.out.println(n_list[0][1]);
}
}
https://github.com/dydwkd486/coding_test/blob/main/baekjoon/java/baekjoon15486/Main.java
GitHub - dydwkd486/coding_test: 코딩테스트 공부한 내용 정리
코딩테스트 공부한 내용 정리. Contribute to dydwkd486/coding_test development by creating an account on GitHub.
github.com
'Coding Test > baekjoon' 카테고리의 다른 글
[백준 1103] 게임- 자바(solved.ac - 골드 2) (0) | 2023.03.20 |
---|---|
[백준 1059] 좋은 구간- python (solved.ac - 실버 4) (0) | 2022.11.13 |
[백준 20057] 마법사 상어와 토네이도- java (solved.ac - 골드 3) (1) | 2022.09.26 |
[백준 1715] 카드 정렬하기- java (solved.ac - 골드 4) (0) | 2022.09.20 |
[백준 2512] 예산- java (solved.ac - 실버 3) (0) | 2022.09.19 |