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;)
      • Computer Science
        • Terminology and Concepts
        • Network
        • Operating System
        • Database
        • Data Structure
        • Web Development
      • 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
      • 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
  • 블로그 메뉴

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

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

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바