{}연습장
대시보드학습스킬 경로문제모의고사라이브 코테복습데이터
문제 목록〉스택〉컨베이어 블록 소거← 이전다음 →
#062 · 스택쉬움스택

컨베이어 블록 소거

문제

퍼즐 공장의 컨베이어 벨트 위에 색 블록이 한 줄로 놓여 있습니다. 블록의 색은 R(빨강), G(초록), B(파랑), Y(노랑) 네 가지이며, 벨트의 상태는 이 네 글자로 이루어진 문자열 blocks 로 주어집니다.

같은 색 블록 두 개가 서로 인접하면 그 두 개는 함께 터져 사라집니다. 블록이 사라지면 빈자리가 없어지도록 양옆의 블록이 붙으면서 새로 인접해지고, 그 결과 다시 같은 색 쌍이 생기면 또 터집니다. 더 이상 터질 쌍이 없을 때까지 이 과정을 반복했을 때 벨트에 남는 블록 문자열을 반환하세요. 모든 블록이 사라지면 빈 문자열 "" 을 반환합니다.

어떤 쌍을 먼저 터뜨리든 최종적으로 남는 문자열은 항상 같습니다.

solution(blocks: string): string

예시

blocks 반환값 설명
"RRGB" "GB" RR 이 터지고 GB 가 남음
"RGGR" "" GG 가 터진 뒤 붙은 RR 도 터짐
"RGB" "RGB" 인접한 같은 색이 없어 그대로
"BYYBRG" "RG" YY → BB 순으로 터지고 RG 만 남음

"BYYBRG" 의 진행 과정:

B[YY]BRG → [BB]RG → RG

제약 조건

  • 1 ≤ blocks.length ≤ 200,000
  • blocks 는 R, G, B, Y 네 문자로만 이루어져 있습니다
  • 반환값은 남은 블록을 왼쪽부터 이어 붙인 문자열입니다

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

테스트 케이스

예시 1: RR 소거 후 GB 남음
입력: blocks = "RRGB"
출력: "GB"
예시 2: 연쇄 소거로 전부 사라짐
입력: blocks = "RGGR"
출력: ""
예시 3: 소거할 쌍이 없음
입력: blocks = "RGB"
출력: "RGB"
예시 4: YY → BB 연쇄 후 RG 남음
입력: blocks = "BYYBRG"
출력: "RG"
블록 한 개
입력: blocks = "Y"
출력: "Y"
같은 색 4개 → 전부 소거
입력: blocks = "YYYY"
출력: ""
안쪽부터 연쇄 소거되고 마지막 한 개만 남음
입력: blocks = "GRRGYYB"
출력: "B"
반복 패턴이라 인접 쌍이 전혀 없음
입력: blocks = "RGBRGB"
출력: "RGBRGB"
solution.ts
에디터 로딩 중…

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