27.Remove Element

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

난이도: Easy

링크:  LeetCode 27

풀이 날짜: 2025/10/14

 

1. 문제 이해

배열 nums와 값 val이 주어졌을 때, nums 내에서 val을 모두 제거한 후의 길이를 반환하는 문제다.

단, 추가적인 배열을 사용하지 말고 (in-place), 제거 후에도 나머지 원소들의 상대적 순서는 유지되어야 한다.

 

2. 아이디어: Two Pointers

배열을 한 번 순회할 포인터와 val가 아닌 값들만 앞으로 옮기기 위한 포인터 2개를 사용한다.

포인터 역할
num 순회용 포인터 (for문으로 배열을 순회)
current val이 아닌 값이 들어갈 위치를 가리킴

 

3. 코드 분석

var removeElement = function(nums, val) {
  let current = 0;

  for (let num of nums) {  
    if (num !== val) {      
      nums[current] = num;
      current++;
    }
  }

  return current;
};

순회하며, if (num !== val) 에서 val이 아닌 값을 발견하면 nums[current] 자리에 옮겨 담고, current를 1 증가시킨다. 즉, val을 “건너뛰며” 유효한 값만 앞으로 모은다. 그리고 current 는 곧 유효한 값들의 총 수가 된다.

항목 복잡도 설명
시간 복잡도 O(n) 배열 한 번 순회
공간 복잡도 O(1) 상수 크기의 포인터만 사용
접근 방식 Two Pointer (In-place 수정) 한 포인터로 유효 원소를 채우며 제거 수행

 

 

4. 요약 및 정리

포인트 설명
in-place 수정 새로운 배열을 만들지 않고 기존 배열을 직접 수정
Two Pointers 하나는 순회용, 하나는 유효한 값의 삽입 위치를 추적

이 문제는 “불필요한 값을 건너뛰며 배열을 재정렬”하는 전형적인 Two Pointers 패턴의 기본 문제다.

 

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

169.Majority Element  (0) 2025.10.15
26.Remove Duplicates from Sorted Array  (0) 2025.10.15
88.Merge Sorted Array  (0) 2025.10.15
322.Coin Change  (0) 2025.10.13
198. House Robber  (0) 2025.10.13
'Coding Test/LeetCode' 카테고리의 다른 글
  • 169.Majority Element
  • 26.Remove Duplicates from Sorted Array
  • 88.Merge Sorted Array
  • 322.Coin Change
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 & CSS
  • 블로그 메뉴

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

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

  • 인기 글

  • 태그

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

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
JTB
27.Remove Element
상단으로

티스토리툴바