[Programmers] Lv2. ์ˆซ์ž ๋ธ”๋ก | C++

2023. 7. 4. 19:26ใ†Coding Test/Programmers

๐Ÿ”—๋ฌธ์ œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ‘จโ€๐Ÿ’ปํ’€์ด ๊ณผ์ •

 

  • n๋ฒˆ์งธ ๋ธ”๋ก์— ๋†“์—ฌ์งˆ ์ˆซ์ž๋Š” n์ด ์†Œ์ˆ˜์ผ ๊ฒฝ์šฐ์—” 1, ์•„๋‹ ๊ฒฝ์šฐ์—๋Š” 10,000,000๋ณด๋‹ค ์ž‘์€ ์ œ์ผ ํฐ ์•ฝ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์ œ๊ณฑ๊ทผ ๋ฐฉ์‹์„ ์ด์šฉํ•˜์—ฌ ์•ฝ์ˆ˜์™€ ์†Œ์ˆ˜๋ฅผ ์ฐพ๋Š” ๋ฐ์— ์‹œ๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ์ ๊ฒ€ํ•˜๋ ค๋Š” ์ˆซ์ž๋ฅผ i๋ผ๊ณ  ํ•œ๋‹ค๋ฉด,
    • n / i โ‰ค10,000,000 ์ด๋ผ๋ฉด, n / i๊ฐ€ ๊ฐ€์žฅ ํฐ ์•ฝ์ˆ˜๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ํฐ ์•ฝ์ˆ˜๋ฅผ ์ฐพ์•˜์œผ๋ฏ€๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
    • ์•„๋‹ˆ๋ผ๋ฉด, i๋ฅผ ์„ ํƒํ•œ ํ›„์— ๋‹ค์Œ ๋ฃจํ”„๋กœ ๋„˜์–ด๊ฐ€๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
  • n์ด 1์ธ ๊ฒฝ์šฐ์—๋Š” 0์ด ์ ํžŒ ๋ธ”๋ก์ด ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ, ์ด ๋ถ€๋ถ„๋งŒ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

 

๋ธ”๋ก ์ˆซ์ž๊ฐ€ 10,000,000๋ณด๋‹ค ํฌ๋ฉด ์•ˆ ๋œ๋‹ค๋Š” ์ ์—์„œ ๋งŽ์ด ํ—ค๋งธ๋˜ ๋ฌธ์ œ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

 

โœ๏ธ์†Œ์Šค ์ฝ”๋“œ ๋ฐ ๊ฒฐ๊ณผ

#include <vector>
using namespace std;
const int MAX_VALUE = 10000000;

long long FindMaxDivisor(long long n) {
    long long result = 1;

    for (long long i = 2; i * i <= n; i++) {
        if (n % i == 0) {
            result = i;

            if (n / i <= MAX_VALUE) {
                result = n / i;
                break;
            }
        }
    }

    return result;
}

vector<int> solution(long long begin, long long end) {
    vector<int> answer;

    for (long long i = begin; i <= end; i++) {
        if (i == 1) {
            answer.emplace_back(0);
            continue;
        }
        answer.emplace_back(FindMaxDivisor(i));
    }

    return answer;
}

 

 

728x90
๋ฐ˜์‘ํ˜•