2023. 10. 10. 10:28ใ์ธํ๋ฐ/์๋ฐ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด ์ ๋ฌธ : ์ฝ๋ฉํ ์คํธ ๋๋น
https://hyejin.tistory.com/1212
-> ์ด์ ๋ฌธ์ ํ์ด
5. ์์ (์๋ผํ ์คํ ๋ค์ค ์ฒด)
์ค๋ช
์์ฐ์ N์ด ์ ๋ ฅ๋๋ฉด 1๋ถํฐ N๊น์ง์ ์์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์.
๋ง์ฝ 20์ด ์ ๋ ฅ๋๋ฉด 1๋ถํฐ 20๊น์ง์ ์์๋ 2, 3, 5, 7, 11, 13, 17, 19๋ก ์ด 8๊ฐ์ ๋๋ค.
์ ๋ ฅ
์ฒซ ์ค์ ์์ฐ์์ ๊ฐ์ N(2<=N<=200,000)์ด ์ฃผ์ด์ง๋๋ค.
์ถ๋ ฅ
์ฒซ ์ค์ ์์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
์์ ์ ๋ ฅ 1
20
์์ ์ถ๋ ฅ 1
8
๋ฌธ์ ํ์ด 1
public int solution(int num)
{
int answer = 0;
for (int i = 2; i <= num; i++)
{
int cnt = 0;
for (int j = 1; j <= i; j++)
{
if (i % j == 0)
{
cnt++;
}
}
if (cnt <= 2)
{
answer ++;
}
}
return answer;
}
๐ฉ๐ป : ์ฐ์ ์ด๊ฑด ๋ด๊ฐ ํผ ๋ฐฉ์์ธ๋ฐ ์ด๋ ๊ฒ ํ๋ฉด ํ์ ์์์ด ๋๋ค. ์ฑ์ ์ฌ์ดํธ ์๊ฐ ์ ํ์ด 1์ด์ฌ์ num์ ๊ฐ์ผ๋ก 20๋ง ์ ์ฃผ๋ฉด ์๊ฐ ์ ํ์์ ๊ฑธ๋ฆฐ๋ค.. ์์ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์๋ผํ ์คํ ๋ค์ค ์ฒด๋ฅผ ์ฌ์ฉํ๋ผ๋ ๊ฒ ๊ฐ์๋ฐ ๊ทธ ๋ฐฉ์์ ๋ชจ๋ฅด๊ณ ... ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํ์๋ ๋จธ๋ฆฌ๊ฐ ์๋์๊ฐ์... ์ฒ์์ผ๋ก ๋ฌธ์ ์ ๋ต ์ฒ๋ฆฌ ์ ์.. ๊ฐ์๋ฅผ ๋ดค๋ค...
์ํผ ๋ด๊ฐ ํผ ๋ฐฉ์์ ์ด์ค for๋ฌธ์ ๋๋ฉด์ i % j == 0์ด๋ฉด cnt ์ ๊ฐ์ ์ฆ๊ฐํด์ฃผ๊ณ , ๋๋ฒ์งธ for๋ฌธ์ ๋์์ cnt๊ฐ 2๋ณด๋ค ํฌ๋ฉด ์์๊ฐ ์๋๋ผ๋ ๋ง์ด๊ธฐ ๋๋ฌธ์ answer์ 1 ๋ํ์ง ์๊ณ , 2๋ณด๋ค ์ดํ์ผ ๊ฒฝ์ฐ์๋ง 1 ๋ํ๋๋ก ํด์ ๋ฆฌํดํ๋ค.
๋ฌธ์ ํ์ด 2
public int solution2(int n)
{
int answer = 0;
int[] ch = new int[n + 1];
for (int i = 2; i<= n; i++)
{
if (ch[i] == 0)
{
answer++;
for (int j = i; j<= n; j = j+ i)
{
ch[j] = 1;
}
}
}
return answer;
}
๐พ : ์๋ผํ ์คํธ๋ค์ค ์ฒด๋ ์ฐ์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ธ๋ฐ ๋ฐฐ์ด์ ์ฃผ์ด์ง n+1๊ฐ(n๋ ํฌํจ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ) ๋งํผ ๋ง๋ค์ด์ ๋ชจ๋ 0์ผ๋ก ์ด๊ธฐํ๋ ๋ฐฐ์ด์ for๋ฌธ์ ๋๋ค๊ฐ ch[i] == 0์ด๋ฉด answer++ํ๋ ๋ฐฉ์์ด๋ค. answer์ 1 ๋ํ ๋ค์, for๋ฌธ์ ํ๋ ๋ ๋ง๋ค์ด์ ch[i] == 0 ์ด์๋ i์ ๋ฐฐ์ ๊ฐ์ ํด๋นํ๋ ๋ฐฐ์ด์๋ ๋ชจ๋ 1๋ก ์ด๊ธฐํํด์คฌ๋ค. (i์ ๋ฐฐ์๋ ์์๊ฐ ์๋๊ธฐ ๋๋ฌธ)
์ด๋ ๊ฒ ํ๋ฉด ์๊ฐ ์ ํ ๊ฑธ๋ฆฌ์ง ์๊ณ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค.