fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 5623 (C++) 수열의 합
최초 업로드: 2025-11-15 15:57:46
최근 수정 시간: 2025-11-15 15:57:46
게시자: rlatjwls3333
카테고리: 백준
조회수: 6
# [Silver IV] 수열의 합 [문제 링크](https://www.acmicpc.net/problem/5623) ## 문제 설명 <p>양의 정수 N개로 이루어진 수열 A가 있다. 상근이는 수열 A의 모든 두 수의 합을 알고 있다. 이때, 수열 A를 구하는 프로그램을 작성하시오.</p> ## 입력 <p>첫째 줄에 수열의 크기 N이 주어진다. (2 ≤ N ≤ 1000)</p> <p>다음 N개 줄에는 100,000보다 작거나 같은 양의 정수가 N개씩 주어진다. 이 숫자들은 S를 이루는 숫자이며, S(i,j) = A[i] + A[j] (i≠j), S(i,j) = 0 (i=j) 이다. S(i,j)는 i번째 줄, j번째 숫자를 의미하며, A[i]는 A의 i번째 수이다.</p> <p>입력으로 주어지는 S에 해당하는 수열 A는 항상 유일하다.</p> ## 출력 <p>첫째 줄에 수열 A를 출력한다.</p> ## 풀이 $a_1+a_2$, $a_1+a_3$, $a_2+a_3$ 세 값을 사용하여 연립 이차방정식을 풀면 되는 문제입니다. A가 항상 유일하도록 입력으로 들어오니 이를 만족하는 수열은 {1, 1}밖에 존재하지 않습니다. ``` c++ #include<bits/stdc++.h> using namespace std; int a[1000][1000]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin >> a[i][j]; if(n==2) { cout << "1 1"; } else { int a1 = (a[0][1]-a[1][2]+a[0][2])/2; cout << a1; for(int i=1;i<n;i++) cout << ' ' << a[0][i]-a1; } } ```