{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉투 포인터〉불량 상자 뒤로 몰기← 이전다음 →
#009 · 투 포인터쉬움제자리 재배치,쓰기 포인터

불량 상자 뒤로 몰기

문제

물류센터 컨베이어에는 상자들이 한 줄로 놓여 있고, 각 상자에는 품목 번호가 붙어 있습니다. 검수팀은 품목 번호가 v인 상자를 불량 상자 로 분류해, 라인 뒤쪽으로 전부 몰아 두려 합니다.

컨베이어의 상자 번호 배열 line과 불량 품목 번호 v가 주어질 때, 번호가 v인 상자를 모두 배열 끝으로 보내되 나머지 상자들의 상대적 순서는 그대로 유지 하도록 배열을 정리하는 solution(line, v) 함수를 작성하세요.

중요: 새 배열을 만들어 반환하지 말고, 주어진 배열 line을 제자리(in-place)에서 수정해야 합니다. 함수는 아무것도 반환하지 않습니다.

예시

line = [4, -1, 7, -1, -1, 3], v = -1
→ [4, 7, 3, -1, -1, -1]
  불량이 아닌 4, 7, 3의 순서는 그대로 유지된다.
 
line = [0, 3, 0, 0, 4], v = 0
→ [3, 4, 0, 0, 0]
 
line = [2, 8, 6], v = 9
→ [2, 8, 6]
  불량 상자가 하나도 없으면 배치는 변하지 않는다.
 
line = [5, 5, 5], v = 5
→ [5, 5, 5]
  전부 불량이면 옮길 것이 없다.

제약 조건

  • 1 ≤ line.length ≤ 100,000
  • -1,000,000,000 ≤ line[i], v ≤ 1,000,000,000
  • 배열 자체를 제외하고 O(1)의 추가 메모리만 사용해야 합니다
  • 불량 상자끼리의 순서는 서로 구분하지 않습니다 (모두 같은 번호 v)

시간 복잡도 목표: O(N)

테스트 케이스

예시 1: 음수 번호를 뒤로 몰기
입력: line = [4,-1,7,-1,-1,3], v = -1
출력: [4,7,3,-1,-1,-1]
예시 2: 연속된 불량 상자
입력: line = [0,3,0,0,4], v = 0
출력: [3,4,0,0,0]
예시 3: 불량 상자가 없는 경우
입력: line = [2,8,6], v = 9
출력: [2,8,6]
예시 4: 전부 불량인 경우
입력: line = [5,5,5], v = 5
출력: [5,5,5]
엣지: 맨 앞 상자만 불량
입력: line = [9,1], v = 9
출력: [1,9]
엣지: 상자가 하나뿐
입력: line = [7], v = 7
출력: [7]
불량이 흩어져 있는 경우
입력: line = [1,2,1,3,1], v = 1
출력: [2,3,1,1,1]
solution.ts
에디터 로딩 중…

▶ 실행은 기록 없이 채점만, 제출은 결과가 진행률·오답노트에 기록됩니다.