๋ฌธ์
https://www.acmicpc.net/problem/1773
์ค๋ช
์ด ๋ฌธ์ ๋ ๊ณต๋ฐฐ์๋ฅผ ์ด์ฉํ๋ ๋ฌธ์ ์ด๋ค ํ์๋ค์ด ํญ์ฃฝ์ ์๋ ์ฃผ๊ธฐ๋ฅผ ๋๋๋ ์๊ฐ๊น์ง์ ์ซ์๊น์ง์ ๋ฒ์์์ ๋ฐฐ์์ ๊ฐฏ์๋ฅผ ์ธ์ผ ๋๋๋ฐ ์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ ์ค๋ณต๋๋ ๊ณต๋ฐฐ์์ ๊ฒฝ์ฐ ๋ฐ๋ก ๋นผ๊ณ ์นด์ดํธ๋ฅผ ํด์ค์ผํ๋ค๋ ์ ์ด์๋ค. ๊ทธ๋์ ๋๋ ์๋๋ 2,000,000์ ๊ธธ์ด์ int ๋ฐฐ์ด์ ๋ง๋ค์ด ์ด๋ฏธ ์นด์ดํธ ํ ์ซ์๋ฅผ ๊ธฐ๋กํ์ฌ ์ค๋ณต๋๋ ๋ถ๋ถ์ ๋นผ๋๋ก ํ๋ ค๊ณ ํ์๋ค.
...
int arr[2000000];
int main()
{
...
return 0;
}
int ๋ฐฐ์ด๋ก๋ ์ ์ ๋ ๊ธธ์ด์ ๋ฐฐ์ด์ ๋ง๋๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํ๋ค๋ ํ๋จ์ด ๋ค์๋ค. ๊ทธ๋์ ๋ค๋ฅธ ์ต์๊ณต๋ฐฐ์๋ฅผ ๊ตฌํ์ฌ ์ค๋ณต๋๋ ๊ฐ์ ๊ตฌํ์ฌ ์นด์ดํธ๋๊ฐ์์ ์ ์ธ์์ผ ๋บ๋ค๋์ง ๋ค๋ฅธ ๋์์ ์๊ฐํด ๋ณด์์ง๋ง ๋ฌธ์ ๋์ด๋์ ๋ง์ง ์๊ฒ ์์ค๊ฐ ๋ ๋ณต์กํด์ง๊ฒ ๋์์ผ๋ ์คํฐ๋๋ฉ์ดํธ์ ๋์์ผ๋ก C์ธ์ด์์ bool ๋ณ์ ๋ฅผ ์ ์ธํ ์ ์์์ ์๊ฒ ๋์๋ค.
Bool : Boolean์ ์ฝ์๋ก int๋ณ์์ ๋ค๋ฅด๊ฒ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณ์ ํ๋๋น 1 ๋ฐ์ดํธ์ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ฉฐ ์ฐธ(True), ๊ฑฐ์ง(False)๋ก ๋จ ๋๊ฐ์ง ๊ฐ๋ง์ ๊ฐ์ง ์ ์๋ค.
๋จ ๋ค๋ฅธ ์ธ์ด์ ๋ฌ๋ฆฌ C์ธ์ด ์ ๊ฒฝ์ฐ ๋ณ๋๋ก ์๋์ ๊ฐ์ด ํด๋๋ฅผ ์ ์ธํด ์ค์ผ ๋ถ๋ฆฌ์ธ(boolean)๋ณ์๋ฅผ ํ์ฉํ ์ ์๋ค.
...
#include <stdbool.h>
int main()
{
...
return 0;
}
๋ถ๋ฆฌ์ธ ๋ณ์๊ฐ ์ด๋ฌธ์ ์ ํต์ฌ์ธ ์ด์ ๋ ๋ถ๋ฆฌ์ธ์ ๋ฐฐ์ด๋ณ์๋ก ๋ง๋ค๋ฉด ๋ด๊ฐ ์ํ๋ 2,000,000์ ๊ธธ์ด์ ๋ฐฐ์ด์ ๋ง๋๋ ๊ฒ ๋ํ ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ ๊ฒ ๋์ด ๋ด๊ฐ ์๊ฐํ ์๊ณ ๋ฆฌ์ฆ์ ์ด ๋ถ๋ฆฌ์ธ ๋ณ์๋ฅผ ๋ฐฐ์ด์ ํํ๋ก ์ด์ฉํ์ฌ ์ง ๋ด ํ ์์ค ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
#include <stdio.h>
#include <stdbool.h>
bool arr[2000000];
int main() {
int stu, last_time,stu_time[100],count=0;
scanf("%d %d",&stu, &last_time);
for(int i=0; i<stu; i++)
{
scanf("%d",&stu_time[i]);
for(int j=1; j*stu_time[i]<=last_time; j++)
{
if(arr[j*stu_time[i]-1] != true)
{
arr[j*stu_time[i]-1] = true;
count++;
}
}
}
printf("%d",count);
return 0;
}
์์์ ๋งํ๋๋ก ํ์๋ค์ ์ฃผ๊ธฐ๋ฅผ ์ ๋ ฅ๋ฐ์๋ง์ ํ๋น ์ฃผ๊ธฐ ์๊ฐ ๋ง๋ค์ ์๋ ๋๋๋ ์๊ฐ(last_time) ์ดํ์ ๊ณต๋ฐฐ์๋ฅผ ๋ชจ๋ ๋ถ๋ฆฌ์ธ ๋ณ์์ธ arr ๋ณ์์ ๋ชจ๋๊ธฐ๋กํ๊ณ ๋๋ฒ์งธ ํ์์ ์ฃผ๊ธฐ๋ฅผ ์ ๋ ฅ๋ฐ๊ธฐ ์์ํ๊ณ ๋ถํฐ๋ ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด i ๋ฒ์งธ ํ์์ ์ฃผ๊ธฐ์ ๊ณต๋ฐฐ์๊ฐ ๊ฒน์น๋ ๊ฒฝ์ฐ๊ฐ ์๋ ์ง ์กฐ์ฌ๋ฅผ ํ๋ฉฐ ์นด์ดํธ๋ฅผ ์งํํ๋๋ก ํ๋ค. ๊ทธ๋ฌ๋ ์ ์์ค์์๋ ์ฝ๋ ์์ฑ์ ํธ์์ i ๊ฐ 1์์๋ ๋ถ๊ตฌํ๊ณ ์ค๋ณต๊ฒ์ฌ๋ฅผ ์งํํ๋๋ก ํ์๋ค. (ํ๋ง๋๋ก ๋งํด ์ธ๋ชจ์๋ ๊ณผ์ ์ด ํฌํจ๋ ์์ค๋ผ๋ ๊ฑฐ๋คโฆ(โข_โข) )
๊ฒฐ๊ณผ ๋งํฌ : http://boj.kr/d5e3841e82d740a08f15b40f8194c019