반응형
#include <iostream>
using namespace std;
int main()
{
int num, i, j;
cin >> num;
for (i = 1; i <= num; i++)
{
int count = 0;
for (j = 1; j <= i / 2; j++)
{
if (i % j == 0) count++;
}
count += 1;
cout << count << ' ';
}
return 0;
}
출력 결과
채점 결과
더보기
#include <iostream>
using namespace std;
int main()
{
int n[50001] = { 0 };
int num, i, j;
cin >> num;
for (i = 1; i <= num; i++)
{
for (j = i; j <= num; j += i)
{
n[j]++;
}
}
for (i = 1; i <= num; i++)
cout << n[i] << " ";
return 0;
}
이중 for문은 역시 너무 느리다... 처음에는 그냥 i까지 돌게 했다가 뭔가 변하는 게 있을까 싶어서 i의 절반까지 돌고 +1 처리를 해 주는 식으로 변경했는데도 시간 초과가 떴다. 😥
배수를 처리해 주는 방법은 처음 접해 보는 것 같다. n^2에서 nlogn 근접한 정도까지 줄일 수 있다니 신기하다.
해당 포스트는 'it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비' 강의를 수강하며 개인 백업용으로 메모하였습니다.
인프런: https://www.inflearn.com/course/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98#
반응형