티스토리 뷰

백준/실버

[백준 11502번] 세 개의 소수 문제 (C++)

게임개발기원 2025. 6. 26. 00:19

문제 링크 : https://www.acmicpc.net/problem/11502

#include <bits/stdc++.h>
using namespace std;

int arr[1001];

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;

    for(int i=2; i<1001; i++)
    {
        if(arr[i]) continue;
        for(int j=i*i; j<1001; j+=i)
        {
            arr[j]=1;
        }
    }

    while(T--)
    {
        int N;
        cin >> N;
        bool flag = 0;
        
        for(int i=2; i<=N && !flag; i++)
        {
            if(arr[i]) continue;
            for(int j=2; j<=N && !flag; j++)
            {
                if(arr[j]) continue;
                for(int k=2; k<=N && !flag; k++)
                {
                    if(arr[k]) continue;
                    if((i+j+k)==N)
                    {
                        cout << i << ' ' << j << ' ' << k << '\n';
                        flag = 1;
                    }
                }
            }
        }
        if(!flag) cout << 0 << '\n';
    }

    return 0;
}

 

먼저 주어진 N 범위 이내의 값을 모두 소수 판별하여 배열에 체크해준다.

이후 세개의 소수 및 오름차순 체크이므로 3중 반복문을 통해 각 값이 소수가 맞는지, 그리고 합이 N이 맞는 지 체크한다.

이 경우 맞다면 바로 삼중 반복문의 각 인덱스들을 순서대로 출력해주면 된다.

다른 케이스를 출력하지 않기 위해 flag 변수를 통해 반복문 실행 여부를 제어해주었다.

그리고 불가능한 경우 0을 출력하는 것도 해주어야 한다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
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
27 28 29 30 31
글 보관함