๋ฌธ์ œ

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