[실전 문제] PROSJEK

2021. 2. 17. 12:04코딩 테스트/실전 문제

1. 문제

민건이는 수학 수업시간동안 재밌는 방법으로 수학을 연습하고 있다.

 

먼저 민건이는 정수 수열 A를 작성했다.

 

그리고 나서 그 아래에 A의 해당 항까지의 평균값을 그 항으로 하는 정수 수열 B를 쓴다.

 

예를 들어 , 만약 수열 A가 1, 3, 2, 6, 8 이라면 수열 B는 1/1, (1+3)/2 , (1+3+2)/3, (1+3+2+6)/4, (1+3+2+6+8)/5 즉, 1, 2, 2, 3, 4 가 된다.

 

수열 B가 주어졌을 때 수열 A를 구하는 프로그램을 작성하시오.


입력

첫째줄에 수열 B의 길이를 나타내는 N이 주어진다.(1 <= N <= 100)

 

두번째 줄에 수열 B를 구성하는 N개의 요소가 주어진다. Bi (1 <= Bi <= 10^9)

출력

첫째 줄에 수열 A를 이루는 N개의 정수를 출력해라 (1 <= Ai <= 10^9)

 

NOTE : 수열 A의 요소들은 정수이다.

예제 입력

case 1)

1
2

 

case 2)

4
3 2 3 5

 

case 3)

5
1 2 2 3 4

예제 출력

case 1) 2

case 2) 3 1 5 11

case 3) 1 3 2 6 8

 

 

 

2. 풀이

import java.io.*;
import java.util.StringTokenizer;

public class Main {

    private static final BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    private static final BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

    public static void main(String[] args) throws IOException {

        int n = Integer.parseInt(br.readLine());

        int[] arr = new int[n+1];
        StringTokenizer st = new StringTokenizer(br.readLine());
        for(int i = 1; i <= n; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
		
        // 나누기 전 상태
        for(int i = n; i >= 1; i--) {
            arr[i] = arr[i] * i;
        }
        
        // 더하기 전 상태
        for(int i = n; i >= 1; i--) {
            arr[i] = arr[i] - arr[i-1];
        }

        for(int i = 1; i <= n; i++) {
            bw.write(arr[i] + " ");
        }
        
        br.close();
        bw.flush();
        bw.close();
    }
}
728x90

'코딩 테스트 > 실전 문제' 카테고리의 다른 글

[실전 문제] fractionsum  (0) 2021.02.17
[실전 문제] lcm  (0) 2021.02.17
[실전 문제] fibonacci  (0) 2021.02.17
[실전 문제] nextnum  (0) 2021.02.17