반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 이분탐색
- 소수판정
- 정수론
- 다이나믹프로그래밍
- 백준
- 브루트포스알고리즘
- MySQL
- 이진탐색
- 프로그래머스
- 큐
- 구현
- 논문리뷰
- C++
- 프로그래머스코딩테스트
- 사칙연산
- Image Classification
- 수학
- 논문구현
- 문자열
- 해시를사용한집합과맵
- 정렬
- 그리디알고리즘
- C
- 프로그래머스sql
- SQL
- 자료구조
- 그리디
- 백준알고리즘
- 프로그래머스연습문제
- C언어
Archives
- Today
- Total
초보 개발자의 이야기, 릿허브
[C++] 백준 11653번 소인수분해 본문
728x90
반응형
1. 문제이해
정수 N을 입력받아, 해당 정수를 소인수분해한 결과를 오름차순으로 출력하는 알고리즘을 구현하는 것이 목표이다.
2. 문제풀이
정수 N을 입력받아 소인수분해하는 문제이다.
예를 들어 72의 경우, 소인수 분해하게 되면 2 x 2 x 2 x 3 x 3 이고,
오름차순으로 출력해야하므로 한줄씩 차례대로 2 2 2 3 3을 출력하면 된다.
또 다른 예로 150의 경우, 2 x 3 x 5 x 5 이므로, 차례대로 2 3 5 5 를 출력하면 된다.
위와 같이 인수들을 출력하기 위해, 작은 인수부터 시작해서 점차 숫자를 늘려나가며 N의 인수를 찾아나가는 방법을 이용했다.
3. 소스코드
#include <iostream>
using namespace std;
int main() {
int N;
// 인수는 2부터 시작
int factor = 2;
cin >> N;
while (N != 1) { // 1이 되면 더이상 나누지 못하므로 종료
if (N % factor == 0) { // 나누어지면(인수이면)
cout << factor << '\n';
N = N / factor;
}
else { // 인수를 점차 올려가며 위 if문에서 오름차순으로 출력
factor++;
}
}
return 0;
}
N을 입력받아 while 문 안의 if문을 통해, 인수이면, 즉 나누어떨어지면 해당 인수를 출력하고,
아니라면 인수의 값을 하나씩 늘려가며 계산해주었다.
N이 1이되면 더이상 나눌수 없으므로 while문을 종료하고,
인수(factor)는 2부터 시작하도록 설정했다. (1부터 시작하면 계속 나누어짐.)
내일이 드디어 정보처리기사 합격발표일이다..
올해들어 가장 긴장되는 순간인것같다..😱
내일은 맘편히 먹고 결과 기다리고.. 일상게시판에 꿀팁이나 적어볼까 생각중이다.
(일상 게시판에 아직 1개도 안올라와있으니 뭔가 허전하달까..ㅎㅎ)
제발 좋은 결과 있기를..🙏🙏
728x90
반응형
'코딩테스트 > 📗 백준 (BOJ)' 카테고리의 다른 글
[C++] 백준 13305번 주유소 (0) | 2021.08.24 |
---|---|
[C++] 백준 10773번 제로 (0) | 2021.08.20 |
[C++] 백준 1822번 차집합 (0) | 2021.08.18 |
[C++] 백준 2693번 N번째 큰 수 (0) | 2021.08.14 |
[C] 백준 1676번 팩토리얼 0의 개수 (2) | 2021.08.11 |