이 문제도 시간초과가 나서 당황스러웠던 문제,,,,, 답은 제대로 나오는데 어떻게 풀어야할까 고민하다가,,

검색을 해보니 cin, cout과 printf, scanf의 속도차이가 크다고 해서 일단 cin만 scanf로 수정을 해주었더니 바로 맞았습니다, 가 떴다.

 

속도를 위해선 scanf와 printf를 써야함을 잊지 말자!

#include <iostream>
using namespace std;
bool check[1000001];

int main() {
    int num, i, j, tmp, flag = 0;

    check[0] = check[1] = true;

    for (i = 2; i < 1000001; i++) {
        if (check[i] == false) {
            for (j = i * 2; j < 1000001; j += i)
                check[j] = true;
        }
    }

    scanf("%d", &num);
    while (num != 0) {
         for (i = 3; i < num/2 + 1; i++) {
             if (check[i] == false) {
                  tmp = num - i;
                  if (tmp>0 && check[tmp] == false) {
                       cout << num << " = " << i << " + " << tmp << '\n';
                       flag = 1;
                       break;
                  }
            }
        }
        if (flag == 0)
             cout << "Goldbach's conjecture is wrong.\n";
        scanf("%d", &num);
    }

}

'자윤이와고리즘 > Code' 카테고리의 다른 글

[백준] 1476 | 날짜계산  (0) 2019.05.09
[백준] 2309 | 일곱 난쟁이  (0) 2019.05.09
[백준] 1929 | 소수구하기  (0) 2019.05.08
[백준] 1978 | 소수 찾기  (0) 2019.05.08
[백준] 9613 | GCD합  (0) 2019.05.08

+ Recent posts