26.Remove Duplicates from Sorted Array

2025. 10. 15. 14:45·Coding Test/LeetCode

난이도: Easy

링크: LeetCode 26

풀이 날짜: 2025/10/15

 

1. 문제 이해

정렬된 배열 nums가 주어질 때, 중복된 요소를 제거하고 고유한 요소만 남긴 후, 그 길이를 반환해야 한다.

단, 새로운 배열을 만들면 안 되고, 주어진 배열 nums를 직접 수정(in-place)해야 한다.

즉, 문제의 핵심은 배열을 정리(clean up)하면서 중복을 제거하는 효율적인 방법을 찾는 것이다.

 

2. 아이디어: Two Pointers

두 개의 포인터를 사용해 배열을 한 번 순회하며, 중복되지 않은 값만 앞으로 모으는 방식이다.

포인터 역할
i 배열을 순회하면서 현재 원소 확인
current 유일한 요소를 저장할 다음 위치

배열이 정렬되어 있으므로, 인접한 두 원소가 다르면 새로운 고유 값이 등장한 것이다.

 

3. 풀이 코드

var removeDuplicates = function(nums) {
  let current = 1; // 첫 번째 요소는 항상 고유하므로, 두 번째 요소부터 비교를 시작한다.

  for (let i = 1; i < nums.length; i++) {
    // 현재 값이 바로 앞의 고유 값(nums[current - 1])과 다르면, 새로운 값으로 간주한다.
    const isUnique = nums[i] !== nums[current - 1];
    if (isUnique) {      
      // 새로운 고유 값이 등장하면 current 위치에 덮어쓰고, current를 한 칸 이동시킨다.
      nums[current] = nums[i];
      current++;
    }
  }

  return current;
};

 

시간 복잡도는 한 번의 순회만 진행하므로 O(n)

공간 복잡도는 상수 공간을 사용하므로 O(1)

 

4. 요약 및 정리

포인트 설명
in-place 수정 추가 배열 없이 기존 배열을 직접 수정
Two Pointers 하나는 순회, 하나는 유일한 값의 위치 추적

 

풀이 코드 중 이 한줄이 포인트라고 할 수 있다. 

if (nums[i] !== nums[current - 1]) nums[current++] = nums[i];

배열을 깔끔하게 정리하며, current가 중복 제거 후의 배열 길이를 반환한다.

'Coding Test > LeetCode' 카테고리의 다른 글

121. Best Time to Buy and Sell Stock  (0) 2025.10.15
169.Majority Element  (0) 2025.10.15
27.Remove Element  (0) 2025.10.15
88.Merge Sorted Array  (0) 2025.10.15
322.Coin Change  (0) 2025.10.13
'Coding Test/LeetCode' 카테고리의 다른 글
  • 121. Best Time to Buy and Sell Stock
  • 169.Majority Element
  • 27.Remove Element
  • 88.Merge Sorted Array
JTB
JTB
웹/앱 개발 정보를 공유하고 있습니다.
  • JTB
    JTechBlog
    JTB
  • 전체
    오늘
    어제
    • All About Programming;)
      • Other than Tech
        • 잡생각
      • Computer Science
        • Terminology and Concepts
        • Network
        • Operating System
        • Database
        • Data Structure
        • Web Development
        • Interview Prep
      • Frontend
        • Javascript Essentials
        • Perfomance Optimization
        • JS Patterns
        • React
        • Next.js
        • Flutter
        • Testing
      • Backend
        • Node.js
      • DevOps
        • Docker & Kubernetes
      • Coding Test
        • LeetCode
        • Programmers
      • Tech Books & Lectures
        • Javascript_Modern JS Deep d..
        • Network_IT 엔지니어를 위한 네트워크 입문
      • Projects
        • PolyLingo_2025
        • Build Your Body_2024
        • JStargram_2021
        • Covid19 Tracker_2021
        • JPortfolio_2021
        • Nativ_2026
      • BootCamp_Codestates
        • TIL
        • TILookCloser
        • Pre Tech Blog
        • IM Tech Blog
        • Daily Issues and DeBugging
        • First Project
        • Final Project
        • Sprint Review
        • Good to Know
        • Socrative Review
        • HTML &amp; CSS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 글쓰기
    • 관리
  • 공지사항

  • 인기 글

  • 태그

    Operating System
    자바스크립트
    Shared resources
    VoiceJournal
    leetcode
    CPU scheduling algorithm
    indie hacker
    Javascript Essentials
    스코프
    커리어
    testing
    프론트엔드 성능 최적화 가이드
    database
    polylingo
    이벤트
    개인의무한한능력이요구되는세상
    Binary Tree BFS
    TCP/IP
    js pattern
    모던 자바스크립트 Deep Dive
    자바스크립트 딥다이브
    Data Structure
    How memory manage data
    mobile app
    structure of os
    Network
    DOM
    딥다이브
    Threads and Multithreading
    Time complexity and Space complexity
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
JTB
26.Remove Duplicates from Sorted Array
상단으로

티스토리툴바