문제

접근법
레벨의 수 : 
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