728x90
시간 제한 : 2초
메모리 제한 : 128MB
입력
첫째 줄에 N(3≤N≤999, N은 홀수)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 1번 학생과 2번 학생이 가지고 있는 사탕의 수의 합, 2번 학생과 3번 학생이 가지고 있는 사탕의 수의 합, …, N-1번 학생과 N번 학생이 가지고 있는 사탕의 수의 합, 마지막으로 N번 학생과 1번 학생의 가지고 있는 사탕의 수의 합이 순서대로 주어진다.
출력
첫째 줄부터 N개의 줄에 걸쳐 1번 학생이 가지고 있는 사탕의 수, 2번 학생이 가지고 있는 사탕의 수, …, N번 학생이 가지고 있는 사탕의 수를 순서대로 출력한다. 출력하는 수는 음이 아닌 정수들이어야 하며, 항상 답이 존재하는 경우만이 입력으로 주어진다고 가정해도 좋다.
소스코드
#include <iostream> using namespace std; int main(void) { int n; int arr[1000], sum = 0; cin >> n; for (int i = 0; i < n; i++) { cin >> arr[i]; sum += arr[i]; } sum /= 2; for (int i = 0; i < n; i++) { int tmp = 0; for (int j = 0; j < n; j += 2) tmp += arr[(i + j) % n]; cout << tmp - sum << '\n'; } }
Tip
일단 수의 총합을 구하고, 주어진 입력값을 하나씩 건너뛰면서 (N-1)/2개씩 더하고 총합과의 차이를 구하면, 원하는 값을 하나씩 얻어낼 수 있다.
728x90
'Computer Science > Algorithm Problem' 카테고리의 다른 글
백준] 14470 - 전자레인지(JOI 2017 예선) (0) | 2018.06.10 |
---|---|
백준] 1138 - 한 줄로 서기 (0) | 2018.06.08 |
백준] 1439 - 뒤집기 (0) | 2018.06.06 |
백준] 1531 - 투명 (0) | 2018.06.05 |
백준] 1855 - 암호 (0) | 2018.06.04 |