[BOJ_1812 | Math] 사탕

2019. 2. 10. 14:32Computer Science/Problem Solving (PS)

save image




풀이






깔끔한 수학 구현 문제였다. 입력케이스의 개수가 홀수 개여서 복잡하게 머리를 굴리지 않아도 된다.

문제를 해결하는 기본 원리는 다음과 같다.

입력으로 들어오는 모든 숫자들을 더한다음 2로 나누면, 1~N까지의 학생들이 가지고 있는

모든 사탕의 수가 나오게 된다.

(왜냐하면 모든 수를 다 두 번씩 더하기 때문 1+2 2+3 3+1)


거기에 지금 구하고자 하는 학생을 제외한 나머지 학생들의 사탕의 개수들의 합을 빼주면

지금 구하고자 하는 학생의 사탕의 개수가 나오게 된다.


1 = (1+2+3) - (2+3)

2 = (1+2+3) - (3+1)

3 = (1+2+3) - (1+2)


이 식을 N에 대해 일반화하면 금방 정답을 구할 수 있다. 







소스 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.*;
public class BOJ_1812 {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        int[] nextSum = new int[n];
        int sum = 0;
        for(int i=0;i<n;i++){
            nextSum[i] = input.nextInt();
            sum += nextSum[i];
        }sum/=2;
 
        for(int i=0;i<n;i++){
            int cnt = i%2int val = sum;
            if(i<2) cnt = i+1;
            while(true){
                if(cnt>=n) break;
                if(cnt==i) {cnt++continue;}
                val -= nextSum[cnt];
                cnt+=2;
            }
            System.out.println(val);
        }
    }
}
 
cs

반응형

'Computer Science > Problem Solving (PS)' 카테고리의 다른 글

[BOJ_1927 | Heap] 최소 힙  (0) 2019.02.13
[BOJ_14502 | DFS] 연구소  (0) 2019.02.12
[BOJ_1629 | Divide & Conquer] 곱셈  (0) 2019.02.09
[BOJ_1940 | While] 주몽  (0) 2019.02.07
[백준 3184 | DFS] 양  (0) 2019.02.05