본문 바로가기
프로그래밍/CodeUp

CodeUp[Q_2028] : 삼각수

by 조원일 2020. 3. 23.
728x90

1. 문제

https://codeup.kr/problem.php?id=2028

 

삼각수

약수의 개수가 처음으로 k개를 넘는 삼각수를 출력한다.

codeup.kr

[출처 : 코드업(https://codeup.kr/)]

이번 문제는 약수의 개수가 처음으로 k개를 넘는 삼각수를 구하는 문제입니다.


※ 삼각수란?

1 = 1

3 = 1 + 2

6 = 1 + 2 + 3

이와 같은 규칙으로 나온수를 삼각수라한다.


 

 

2. 해답

#include <stdio.h>

int Aliquot_count(int num) {
	int count = 0;
	int tmp = 0;

	if (num == 1) return 1;

	for (int i = 1; i <= num / 2; i++) {
		if (num % i == 0) {
			// 약수 구하기
			if (i > (num / i)) break;

			if ((num / i) == i) count++;
			else count += 2;
		}
	}
	return count;
}

int main()
{
	int num;
	int tmp = 1;
	int i = 2;

	scanf("%d", &num);

	while (Aliquot_count(tmp) <= num) {
		tmp += i; // 삼각수
		i++;
	}
	printf("%d\n", tmp);
	return 0;
}