일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- Spring
- withmockuser
- 백준
- FNN
- Backend
- web
- DP
- 에라토스테네스의체
- 알고리즘
- PS
- responsebody
- 쉬운딥러닝
- SpringBoot
- C++
- 책리뷰
- 딥러닝
- 스택
- python3
- Andrew Ng
- WebMvcTest
- 신경망기초
- 코딩
- REST API
- 그리디
- RequestBody
- testing
- BOJ
- Spring Data JPA
- 정렬
- 로지스틱회귀
Archives
- Today
- Total
꾸준히하자아자
[백준]2501번 약수구하기 c/c++ 본문
728x90
728x90
문제
https://www.acmicpc.net/problem/2501
나의 문제해결 순서
1. n(자연수)와 k(n의 약수중 k번째로 작은수)를 입력받는다.
2. 약수 개수를 세어줄 정수형 변수 cnt를 0으로 초기화 해준다.
3. 약수를 a배열에 차례대로 저장하기위해 크기가 10000인 정수형 배열을 선언해준다.
(n이 1이상 10000이하이기 때문에 약수의 개수가 최대 10000개가 될 수 있기때문)
4. a배열의 인덱스값을 나타내줄 j를 0으로 초기화해준다.
5. 입력해준 n을 1부터 n까지 for문을 돌린다.
6. (for문을 돌면서 1~n까지 증가하는)i로 나누었을때 0이되면 i가 n의 약수가 되기 때문에 약수를 구하게 되면
7. a배열에 약수를 저장해준다.
8. cnt와 j를 증가시켜준다.
9. N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 0을 출력해야하기때문에 cnt가 k보다 크거나 같을때는 a배열의 k-1번째번째 값을 출력해주고, 그 경우가 아니라면 0을 출력해준다.
코드
#include<iostream>
using namespace std;
int main()
{
int n, k;
cin >> n >> k;
int cnt = 0;
int a[10000];
int j = 0;
for (int i = 1; i <= n; i++) {
if (n % i == 0) {
a[j] = i;
j++;
cnt++;
}
}
if (cnt >= k)
cout << a[k - 1];
else
cout << 0;
return 0;
}
728x90
728x90
'개발 > 백준 & 프로그래머스' 카테고리의 다른 글
[백준]2609번 최대공약수와 최소공배수 c/c++ (0) | 2022.06.25 |
---|---|
[백준]1789번 수들의 합 c/c++ (0) | 2022.06.25 |
[백준]3460번 이진수 c/c++ (0) | 2022.06.25 |
[백준]2309번 일곱 난쟁이 c/c++ (0) | 2022.06.25 |
[백준]2460번 지능형 기차2 c/c++ (0) | 2022.06.25 |