profile image

L o a d i n g . . .

반응형
#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#

 

it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비 - 인프런

알고리즘과 자료구조를 이용해 문제해결력을 기르는게 주 목적입니다. 초급 취업 ・ 이직 프로그래밍 언어 알고리즘 C++ 알고리즘 코딩 테스트 개발자취업 온라인 강의 알고리즘

www.inflearn.com

반응형
복사했습니다!