๐Ÿง ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

[์ธํ”„๋Ÿฐ C++] 9. ๋ชจ๋‘์˜ ์•ฝ์ˆ˜ (์ œํ•œ์‹œ๊ฐ„ 1์ดˆ)

peewoong 2024. 3. 15. 18:57

์ž์—ฐ์ˆ˜ N์ด ์ž…๋ ฅ๋˜๋ฉด 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ๊ฐ ์ˆซ์ž๋“ค์˜ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ๋งŒ์•ฝ N์ด 8์ด ์ž…๋ ฅ๋˜๋ฉด, 1(1๊ฐœ), 2(2๊ฐœ), 3(2๊ฐœ), 4(3๊ฐœ), 5(2๊ฐœ), 6(4๊ฐœ), 7(2๊ฐœ), 8(4๊ฐœ)์™€ ๊ฐ™์ด ๊ฐ ์ˆซ์ž์˜ ์•ฝ์ˆ˜์˜ ๊ฐฏ์ˆ˜๊ฐ€ ๊ตฌํ•ด์ง‘๋‹ˆ๋‹ค.

์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด 1๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์•ฝ์ˆ˜์˜ ๊ฐฏ์ˆ˜๋งŒ ์ถœ๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

1 2 2 3 2 4 2 4 ์™€ ๊ฐ™์ด ์ถœ๋ ฅํ•œ๋‹ค.

 

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N์ด ์ฃผ์–ด์ง„๋‹ค.

8

 

์ถœ๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์— 1๋ถ€ํ„ฐ N๊นŒ์ง€์˜ ์•ฝ์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

1 2 2 3 2 4 2 4

 

1ํŠธ (์„ฑ๊ณต)

์•ฝ์ˆ˜ ๋ชจ๋‘ ์ฐพ๊ธฐ (์ œํ•œ์‹œ๊ฐ„์— ๊ฑธ๋ฆผ) => ์‹œ๊ฐ„๋ณต์žก๋„ n^2

#include <iostream>
using namespace std;

int main(){
	//freopen("input.txt", "rt", stdin);
	int a, cnt = 0;
	cin >> a;
	
	for(int i = 1; i <= a; ++i){
		cnt = 0;
		
		for(int j = 1; j <= i; ++j){
			if(i % j == 0){
				cnt++;
			}
		}
		
		cout << cnt << ' ';
	}
	
	return 0;
}

 

 

2ํŠธ (๊ฐ•์˜ ํ’€์ด)

๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜์—ฌ, ์•ฝ์ˆ˜๊ฐ€ 1๋ถ€ํ„ฐ n๊นŒ์ง€ ๋Œ๋ฉด์„œ ์•ฝ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” ์ˆ˜์— ++๋ฅผ ํ•ด์ฃผ์–ด์„œ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•

j = j + i์”ฉ ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ์ด์ค‘ for๋ฌธ์„ ๋Œ๊ธฐ ๋•Œ๋ฌธ์— for๋ฌธ์„ ๋„๋Š” ํšŸ์ˆ˜๊ฐ€ ํ™•์—ฐํžˆ ์ค„์–ด๋“ ๋‹ค. (๋ฐ์ดํ„ฐ๊ฐ€ ํด์ˆ˜๋ก ๋”๋”์šฑ)

์‹œ๊ฐ„๋ณต์žก๋„ => ๊ฑฐ์˜ nlogn

 

i = 1, j = 1 2 3 4 5 6 7 8

i = 2, j = 2 4 6 8

i = 3, j = 3 6

i = 4, j = 4

#include <iostream>
using namespace std;

int main(){
	//freopen("input.txt", "rt", stdin);
    int cnt[50001];
	int n;
	cin >> n;
	
	for(int i = 1; i <= n; ++i){
		for(int j = i; j <=n; j=j+i){
			cnt[j]++;
		}
	}
	
	for(int i = 1; i<=n; ++i){
		cout << cnt[i] << ' ';
	}
	
	return 0;
}

 

๊ฐœ๋…

๋‘˜ ๋‹ค ์ด์ค‘for๋ฌธ์„ ์‚ฌ์šฉ