๐Ÿฐ์ดˆ๋ณด์ž ์นœํ™” ๊ฐ€์ด๋“œ 'Prime Number of Set Bits in Binary Representation' - Problem 762 (C++, Python, JavaScript)

๋ฐœํ–‰: (2026๋…„ 2์›” 21์ผ ์˜คํ›„ 01:28 GMT+9)
4 ๋ถ„ ์†Œ์š”
์›๋ฌธ: Dev.to

Source: Dev.to

Problem Summary

์ฃผ์–ด์ง„ ์ž…๋ ฅ:
๋‘ ์ •์ˆ˜ left์™€ right๊ฐ€ ์ฃผ์–ด์ง€๋ฉฐ, ์ด๋Š” ํฌํ•จ ๊ตฌ๊ฐ„์„ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค.

๋ชฉํ‘œ:
๊ทธ ๊ตฌ๊ฐ„ ์•ˆ์— ์žˆ๋Š” ์ˆซ์ž๋“ค ์ค‘, ์ด์ง„ ํ‘œํ˜„์—์„œ 1์˜ ๊ฐœ์ˆ˜(=โ€ฏset bit) ๊ฐ€ ์†Œ์ˆ˜์ธ ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ฉ๋‹ˆ๋‹ค.

Intuition: How it Works

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌ๊ฐ„์˜ ๊ฐ ์ˆซ์ž์— ๋Œ€ํ•ด ๋‘ ๊ฐ€์ง€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค:

  1. set bit ๊ฐœ์ˆ˜ ์„ธ๊ธฐ.
    ์˜ˆ์‹œ: 6 โ†’ ์ด์ง„์ˆ˜ 110 โ†’ set bit = 2.

  2. ๊ทธ ๊ฐœ์ˆ˜๊ฐ€ ์†Œ์ˆ˜์ธ์ง€ ํ™•์ธํ•˜๊ธฐ.
    ์†Œ์ˆ˜๋Š” 1๋ณด๋‹ค ํฐ ์ž์—ฐ์ˆ˜์ด๋ฉฐ 1๊ณผ ์ž๊ธฐ ์ž์‹  ์™ธ์—๋Š” ์•ฝ์ˆ˜๊ฐ€ ์—†๋Š” ์ˆ˜์ž…๋‹ˆ๋‹ค.
    right โ‰ค 10โถ ์ด๋ฏ€๋กœ ์ตœ๋Œ€ set bit ๊ฐœ์ˆ˜๋Š” ์•ฝ 20 ์ •๋„์ด๋ฉฐ, ์†Œ์ˆ˜ ํŒ๋ณ„์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.

Walkthrough: Understanding the Example

left = 6์ด๊ณ  right = 10์ธ ๊ฒฝ์šฐ:

NumberBinarySet bitsPrime?
61102Yes
71113Yes
810001No
910012Yes
1010102Yes

์ด ๊ฐœ์ˆ˜: 4

The Solutions

C++ Implementation

class Solution {
public:
    // Helper function to check if a number is prime
    bool isPrime(int x) {
        if (x  int:
        def is_prime(x: int) -> bool:
            if x  {
        if (x < 2) return false;
        for (let i = 2; i * i <= x; i++) {
            if (x % i === 0) return false;
        }
        return true;
    };

    let ans = 0;
    for (let i = left; i <= right; i++) {
        // Convert to binary string and count '1's
        let setBits = i.toString(2).split('1').length - 1;
        if (isPrime(setBits)) {
            ans++;
        }
    }
    return ans;
};

Python Implementation

def is_prime(x: int) -> bool:
    if x  {

JavaScript Implementation

let ans = 0;
for (let i = left; i <= right; i++) {
    // Convert to binary string and count '1's
    let setBits = i.toString(2).split('1').length - 1;
    if (isPrime(setBits)) {
        ans++;
    }
}
return ans;

Key Takeaways

  • ๋น„ํŠธ ์กฐ์ž‘: ์ด์ง„ ํ‘œํ˜„์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๊ธฐ๋ณธ์ด ๋ฉ๋‹ˆ๋‹ค.
  • ํ—ฌํผ ํ•จ์ˆ˜: isPrime์™€ ๊ฐ™์€ ๋กœ์ง์„ ๋ณ„๋„ ํ•จ์ˆ˜๋กœ ๋ถ„๋ฆฌํ•˜๋ฉด ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค.
  • ์–ธ์–ด๋ณ„ ์œ ํ‹ธ๋ฆฌํ‹ฐ: ๊ฐ ์–ธ์–ด๋Š” ๋น„ํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹คโ€”C++์˜ __builtin_popcount, Python์˜ bin, JavaScript์˜ toString(2) ๋“ฑ.

Final Thoughts

์ด ๋ฌธ์ œ๋Š” ๊ธฐ๋ณธ์ ์ธ ๋น„ํŠธ ์—ฐ์‚ฐ์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๊ฒ‰๋ณด๊ธฐ์—” ๊ฐ„๋‹จํ•œ ์ˆ˜ํ•™ ํผ์ฆ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ, ๋น„ํŠธ๋ฅผ ์„ธ๊ณ  ์กฐ์ž‘ํ•˜๋Š” ๋Šฅ๋ ฅ์€ ์•”ํ˜ธํ•™์ด๋‚˜ ์••์ถ• ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ๊ฐ™์€ ๋ถ„์•ผ์—์„œ ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ธฐ์ดˆ๋ฅผ ๋งˆ์Šคํ„ฐํ•˜๋ฉด ์‹œ๋‹ˆ์–ด ์ˆ˜์ค€์˜ ์—”์ง€๋‹ˆ์–ด๋ง ์ธํ„ฐ๋ทฐ์—์„œ ์ž์ฃผ ๋“ฑ์žฅํ•˜๋Š” ๋ณต์žกํ•œ โ€œ๋น„ํŠธ๋งˆ์Šคํฌโ€ ๋ฌธ์ œ๋“ค์„ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

0 ์กฐํšŒ
Back to Blog

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

โ€˜Lazyโ€™ ๋ฐฑ์—”๋“œ ๊ตฌ์ถ•์„ ๋ฉˆ์ถฐ๋ผ: ๋ฏธ๋ž˜๋Š” Agentic FaaS์™€ MDL์ด๋‹ค

์šฐ๋ฆฌ๋Š” ํ˜„์žฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐฉ์‹์— ํฐ ๋ณ€ํ™”๋ฅผ ๊ฒช๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ๋Š” ๋ฏฟ์„ ์ˆ˜ ์—†์„ ์ •๋„๋กœ ๋™์ ์ด ๋˜์—ˆ์ง€๋งŒ, ๋ฐฑ์—”๋“œโ€”์šด์˜์˜ โ€œ๋‘๋‡Œโ€โ€”๋Š” ์•„์ง๋„โ€ฆ

์„œ๋ธŒ๋„ทํŒ… ์„ค๋ช…

Subnetting์ด๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ํฐ ์•„ํŒŒํŠธ ๊ฑด๋ฌผ์„ ์—ฌ๋Ÿฌ ์ธต์œผ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ๊ฐ ์ธต ์„œ๋ธŒ๋„ท์€ ์ž์ฒด ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ง„ ์œ ๋‹›(hosts)์„ ๊ฐ€์ง€๊ณ , ๊ทธ๋ฆฌ๊ณ  ๊ฑด๋ฌผโ€ฆ

API test scripts ์ž‘์„ฑ์„ ์ค‘๋‹จํ•˜์„ธ์š”. ๋Œ€์‹  ํ‰๋ฒ”ํ•œ ์˜์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

๊ฐœ์š” Octrafic๋Š” API ํ…Œ์ŠคํŠธ๋ฅผ ํ‰๋ฒ”ํ•œ ์˜์–ด๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธํ•˜๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ์„ค๋ช…ํ•˜๋ฉด, AI๊ฐ€ ๊ท€ํ•˜์˜ OpenAPI๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ ์ ˆํ•œ HTTP ์š”์ฒญ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.