이 문제의 경우 잘못 이해해서 처음에 헤매었다..
오늘의 교훈: 문제를 차분히 읽고 구상해본 다음 작성하기!
왜냐하면 예시로 주어진 것만 보다가 엔터 치면 입력 종료하는 거라고 받아들여서 완전 이상하게 짜고 있었기 때문이다..
아스키 코드 이용해서 하는 건줄알고 그렇게 해봤는데 안되길래 찾아봤더니 cin/scanf의 경우 엔터를 쳤다고 해도 입력의 종료라는 의미 보다는 입력의 대기의미로 받아들이기 때문이라고 한다...
아무튼 문제를 잘 이해하고 난 후 다시 잘 풀었는데, 또 한 번의 문제가 발생했다.
틀렸습니다, 가 나와서 당황스러웠는데,
이 경우는 sum이 자료형이 처음엔 int로 되어 있던 것이 문제가 되었다. long long으로 수정한 뒤 해결하였다.
#include <iostream>
using namespace std;
int GCD(int a, int b) {
if (b == 0)
return a;
while (b != 0)
return GCD(b, a%b);
}
int main() {
int lines, i, n, j, k;
long long gcd_sum;
cin >> lines;
for (i = 0; i < lines; i++) {
int testcase[100] = { 0 };
gcd_sum = 0;
cin >> n;
for(j =0; j < n; j++) {
cin >> testcase[j];
}
for (j = 0; j <n-1; j++) {
for ( k = j + 1; k <n; k++) {
gcd_sum += GCD(testcase[j], testcase[k]);
}
}
cout << gcd_sum << endl;
}
}
'자윤이와고리즘 > Code' 카테고리의 다른 글
[백준] 1929 | 소수구하기 (0) | 2019.05.08 |
---|---|
[백준] 1978 | 소수 찾기 (0) | 2019.05.08 |
[백준]1934|최소공배수 (0) | 2019.05.07 |
[백준]2609|최대공약수와최소공배수 (0) | 2019.05.07 |
[백준]9012|괄호 (0) | 2019.03.23 |