문제

접근법
레벨의 수 :
4
, 점수 : 5 3 7 5
입력을 받았을 때가장 뒤의 점수가 제일 높고 순차적으로 작아져야 한다.
따라서 for 문에서 배열의 뒤에서 부터 앞으로 탐색한다.
- i = 2 일때 7, 5 를 비교하게 되고 필요한 차이는
7 - 5 + 1 = 3
이 됨. - scores[2] -= 3 을 하면 배열 상태는
[5, 3, 4, 5]
- 3을 count 에 더한다.
- i = 1 일때 3, 4 는 옳기 때문에 변경할 필요 없음.
- i = 0 일때 5, 3 을 비교하여 필요한 차이를 구함
5 - 3 + 1 = 3
- scores[0] -= 3 으라면 배열은
[2, 3, 4, 5]
가 됨 - 필요한 차이인 3을 count 에 더한다.
코드
public class Main_2847 {
public static void main(String[] args) throws IOException {
//게임을 만든 동준이
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
int[] scores = new int[N];
for(int i = 0; i<N; i++) {
scores[i] = Integer.parseInt(br.readLine());
}
int count = 0;
for(int i = N-2 ; i>=0; i--) {
if(scores[i] >= scores[i+1]) {
int minus = scores[i] - scores[i+1] + 1;
scores[i] -= minus;
count += minus;
}
}
bw.write(String.valueOf(count));
bw.flush();
bw.close();
}
}
Share article