티스토리 뷰

728x90
반응형

https://www.acmicpc.net/problem/11653

 

11653번: 소인수분해

첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.

www.acmicpc.net

조금의 미쓰? 아닌 미쓰가 있어서 작성합니다

우선 코드부터 보여드리겠습니다.

#include <cstdio>

int main(void){
    int N; scanf("%d", &N);
    
    int i = 2;
    while(N > 1){
        if(i*i > N) break;
        if(N % i == 0){
            printf("%d\n", i);
            N /= i;
        }
        else{
            if(i == 2) i++;
            else i += 2;
        }
    }
    if(N > 1) printf("%d", N);
}

대충 하는 방법은 알것이라 생각합니다. 자세한 설명은 생략하고 무엇때문이냐면, 만약 N의 값이 소수일 경우 끝까지 갈 수 있기 때문에 (if문이 없다면) if문을 추가하여 소수일 경우 마지막에 if문으로 해당 값을 출력해 주었습니다.

이런 센스가 필요하다 생각하여 작성합니다.

728x90
반응형

'코딩테스트 > Silver 5' 카테고리의 다른 글

[S5] 1181. 단어 정렬  (0) 2022.07.05
[S5] 10814. 나이순 정렬  (0) 2022.07.03
[S5] 11651. 좌표 정렬하기 2  (0) 2022.07.03
[S5] 11866. 요세푸스 문제 0  (0) 2022.07.03
[S5] 1676. 팩토리얼 0의 개수  (0) 2022.07.03