[백준 BOJ] 2501번 약수 구하기 (C언어)

2022. 1. 20. 22:31PS (Program Solving)/BOJ (백준)

문제 설명

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

 

2501번: 약수 구하기

첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.

www.acmicpc.net

 

백준 BOJ 2501번 약수 구하기 문제 사진
백준 BOJ 2501번 약수 구하기 문제 사진2

 

접근 방법 - 약수의 개념을 다루고 있는 수학적 사고력 문제

백준 2501번 문제는 약수에 대한 이해를 묻고 있는 수학적 사고력 문제이다.

약수란 임의의 숫자에 대해서 나누어 떨어지는 숫자를 말하는데, 이를 이용해서 문제를 풀면 된다.

필자는 아래의 순서대로 코드를 작성하여 문제를 해결하였다.

 

코드의 실행 순서

1) 2개의 숫자를 입력받는다. (n의 약수 중 num번째 약수)

 

2) 반복문을 실행한다. (a: 약수의 순서 카운팅 하는 변수, i: 약수 구하는 변수)

- i가 n의 약수인지 판별한다. 약수라면 a에 1을 더한다.

- a가 num과 같다면 현재의 i를 출력한다.

 

3) 2)에서 i를 출력했다면 즉시 실행 종료하고, 반복문 속에서 출력한 약수가 없다면 0을 출력한다.

(여기서 출력한 약수가 없는 경우는 n의 총약수의 개수가 num보다 작은 경우이다.)

반응형

 

성공한 코드

#define _CRT_SECURE_NO_WARNINGS
#pragma warning(disable: 4996)
#include <stdio.h>

//백준 2501번 코드
int main() {
	int n, num;
	scanf("%d %d", &n, &num);

	int i, a = 0;
	for (i = 1; i <= n; i++) {
		if (n % i == 0) { a++; }
		if (a == num) { 
			printf("%d", i);
			return 0; 
		}
	}
	printf("0");
}

 

제출 결과

백준 BOJ 2501번 약수 구하기 문제 C 제출 결과

(2021.12.31 백준 2501번 문제 제출 결과)

반응형