본문 바로가기
Beakjoon&프로그래머스/Java

[백준/Java] 1812번 사탕

by 현장 2026. 1. 25.

-Code

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

public class BOJ1812 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        // x1 + x2 , x2 + x3 ..... xn + x1이므로
        // 짝수 위치를 빼주면 결국 2x1로 첫번째 수만 남음
        int now = 0;
        int[] sumCandy = new int[n];
        for (int i = 0; i < n; i++) {
            sumCandy[i] = sc.nextInt();
            now += i % 2 == 0 ? sumCandy[i] : -sumCandy[i];
        }
        // 첫번째 캔디 수 구하기
        now /= 2;
        // 첫 갯수를 알았으므로 sumCandy를 돌면서 갯수의 차이 넣기
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < n; i++) {
            sb.append(now).append("\n");
            // 다음 값으로 변경
            now = sumCandy[i] - now;
        }
        System.out.println(sb);
    }
}

처음에 sumCandys의 값으로 차를 구할 수 있을 거 같아서 해당 배열의 원소 간의 값 차로 값을 구하려 했으나 실패했습니다. 그래서 어디가 잘못되었는지 찾아보다 x1 + x2 ..... xn + x1이 되는 것을 이용해 전체의 합이 원래 개수의 합의 2배임과 이를 통해 첫 번째 수를 얻을 수 있음을 알게 되었고 그를 통해 해결했습니다.