[BOJ_1812 | Math] 사탕
2019. 2. 10. 14:32ㆍComputer Science/Problem Solving (PS)
풀이
깔끔한 수학 구현 문제였다. 입력케이스의 개수가 홀수 개여서 복잡하게 머리를 굴리지 않아도 된다.
문제를 해결하는 기본 원리는 다음과 같다.
입력으로 들어오는 모든 숫자들을 더한다음 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%2; int 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 |