๐ŸŽฏ ์ดˆ๋ณด์ž์šฉ ๊ฐ€์ด๋“œ 'N-Repeated Element in Size 2N Array' โ€“ LeetCode 961 (C++ | Python | JavaScript)

๋ฐœํ–‰: (2026๋…„ 1์›” 2์ผ ์˜คํ›„ 01:20 GMT+9)
3 min read
์›๋ฌธ: Dev.to

Source: Dev.to

Problem Description

๊ธธ์ด๊ฐ€ 2N์ธ ๋ฐฐ์—ด nums๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.
๋ฐฐ์—ด์—๋Š” N + 1๊ฐœ์˜ ๊ณ ์œ ํ•œ ์š”์†Œ๊ฐ€ ์žˆ์œผ๋ฉฐ, ๊ทธ ์ค‘ ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ์š”์†Œ๊ฐ€ N๋ฒˆ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

๋ชฉํ‘œ: N๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ์š”์†Œ๋ฅผ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Solution Overview

๋ฐ˜๋ณต๋˜๋Š” ์š”์†Œ๊ฐ€ ๋ฐฐ์—ด ์ ˆ๋ฐ˜์„ ์ฐจ์ง€ํ•˜๋ฏ€๋กœ, ๋‘ ๋ฒˆ ๋‚˜ํƒ€๋‚˜๋Š” ์œ„์น˜๋Š” ์ตœ๋Œ€ ๋‘ ์ธ๋ฑ์Šค ์ฐจ์ด๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
ํฌ๊ธฐโ€ฏ3์˜ ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ๋กœ ๋ฐฐ์—ด์„ ์Šค์บ”ํ•˜๋ฉด, ๋งˆ์ง€๋ง‰ ๋ฐฐ์—ด ์›์†Œ์ธ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ์ค‘๋ณต์„ ๋ฐ˜๋“œ์‹œ ๋งŒ๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์•Œ๊ณ ๋ฆฌ์ฆ˜์€ O(N) ์‹œ๊ฐ„์— ์‹คํ–‰๋˜๊ณ  O(1) ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

C++ Implementation

class Solution {
public:
    int repeatedNTimes(vector& nums) {
        // Check windows of size 2 and size 3
        for (int i = 0; i + 2  int:

Python Implementation

# Iterate through the list looking at neighbors
for i in range(len(nums) - 2):
    if nums[i] == nums[i + 1] or nums[i] == nums[i + 2]:
        return nums[i]

# If the repeat isn't within a distance of 2, it's the last element
return nums[-1]

JavaScript Implementation

/**
 * @param {number[]} nums
 * @return {number}
 */
var repeatedNTimes = function(nums) {
    // Loop through the array checking nearby elements
    for (let i = 0; i < nums.length - 2; i++) {
        if (nums[i] === nums[i + 1] || nums[i] === nums[i + 2]) {
            return nums[i];
        }
    }

    // Return the last element if no match was found in the loop
    return nums[nums.length - 1];
};

Key Insights

  • Window Strategy: ์ธ์ ‘ํ•œ ์ด์›ƒ(๊ฑฐ๋ฆฌโ€ฏโ‰คโ€ฏ2)๋งŒ ํ™•์ธํ•˜๋ฉด 2N ๋ฐฐ์—ด์—์„œ ๋ฐ˜๋ณต๋˜๋Š” ์š”์†Œ๋ฅผ ์ฐพ๊ธฐ์— ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
  • Space Efficiency: ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ O(1) ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋นˆ๋„ ์นด์šดํ„ฐ๊ฐ€ ํ•„์š”๋กœ ํ•˜๋Š” O(N) ๊ณต๊ฐ„๋ณด๋‹ค ํ›จ์”ฌ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.
  • Logic Over Brute Force: ์š”์†Œ ๋ถ„ํฌ์— ๋Œ€ํ•œ ๋น„๋‘˜๊ธฐ์ง‘ ์›๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ณ  ๋น ๋ฅธ ํ•ด๊ฒฐ์ฑ…์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
Back to Blog

๊ด€๋ จ ๊ธ€

๋” ๋ณด๊ธฐ ยป

์ฃผ๊ฐ„ ์ฑŒ๋ฆฐ์ง€: ์ƒˆํ•ด, ์ƒˆ๋กœ์šด ๋„์ „

์ƒˆํ•ด ๋ณต ๋งŽ์ด ๋ฐ›์œผ์„ธ์š”, ์—ฌ๋Ÿฌ๋ถ„. ๊ฐ ์ฃผ๋งˆ๋‹ค Mohammad S. Anwar๊ฐ€ The Weekly Challenge https://theweeklychallenge.org/๋ฅผ ๋ณด๋‚ด๋ฉฐ, ์šฐ๋ฆฌ ๋ชจ๋‘๊ฐ€ ํ•ด๊ฒฐ์ฑ…์„ ์ƒ๊ฐํ•ด๋ณผ ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

66. ํ”Œ๋Ÿฌ์Šค ์›

๋ฌธ์ œ ์„ค๋ช…: ๋‹น์‹ ์€ ํฐ ์ •์ˆ˜๋ฅผ ์ •์ˆ˜ ๋ฐฐ์—ด digits ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐ digitsi ๋Š” ์ •์ˆ˜์˜ iแต—สฐ ์ž๋ฆฌ์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ทธ ์ž๋ฆฌ์ˆ˜๋Š” โ€ฆ

[BOJ/C, C++] ๋‹จ๊ณ„๋ณ„๋กœ ํ’€์–ด๋ณด๊ธฐ / ์ž…์ถœ๋ ฅ๊ณผ ์‚ฌ์น™์—ฐ์‚ฐ ~ 1์ฐจ์› ๋ฐฐ์—ด

1008๋ฒˆ A/B ๋ฌธ์ œ ๋งํฌ c include int main { double A, B; scanf'%lf %lf', &A, &B; printf'%.9lf', A / B; } ์†Œ์ˆ˜์  ์•„๋ž˜ 9์ž๋ฆฌ ์ด์ƒ์„ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค. float๋Š” ์•ฝ 6์ž๋ฆฌ๋งŒ ์ •ํ™•ํžˆ ํ‘œํ˜„ํ•˜๋ฏ€๋กœ double์„ ์‚ฌ์šฉ...