https://school.programmers.co.kr/learn/courses/30/lessons/42883
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr

큰 수는 앞자리 숫자가 클수록 유리하므로 StringBuilder를 스택처럼 사용한다.
숫자를 왼쪽부터 확인
→ 현재 숫자가 저장된 마지막 숫자보다 크면 마지막 숫자 삭제
→ 삭제 횟수가 k가 되거나 더 이상 작은 숫자가 없을 때까지 반복
→ 현재 숫자 추가
다음 숫자가 더 클 때만 삭제하므로
오름차순인 경우는 삭제 횟수가 남을 수 있음
그래서 모든 숫자를 순회하고도 삭제 횟수가 남았다면 뒤에서부터 삭제를 해야함
각 숫자는 한 번 추가되고 최대 한 번 삭제됨 : 시간 복잡도: O(N)
class Solution {
public String solution(String number, int k) {
StringBuilder sb = new StringBuilder();
char first = number.charAt(0);
sb.append(first);
int count = 0;
for(int i=1; i<number.length(); i++) {
while(count < k && sb.length() > 0 && sb.charAt(sb.length() - 1) < number.charAt(i)) {
sb.deleteCharAt(sb.length() - 1);
count++;
}
sb.append(number.charAt(i));
}
for(int i=count; i<k; i++) {
sb.deleteCharAt(sb.length() - 1);
}
return sb.toString();
}
}
'알고리즘 & 자료구조 > 문제 풀이' 카테고리의 다른 글
| [프로그래머스 알고리즘 고득점 Kit][그리디][Java] 섬 연결하기 (0) | 2026.08.15 |
|---|---|
| [프로그래머스 알고리즘 고득점 Kit][그리디][Java] 구명보트 (0) | 2026.08.14 |
| [프로그래머스 알고리즘 고득점 Kit][힙(Heap)][Java] 디스크 컨트롤러 (0) | 2026.08.05 |
| [프로그래머스 알고리즘 고득점 Kit][그리디][Java] 조이스틱 (0) | 2026.08.02 |
| [프로그래머스 알고리즘 고득점 Kit][스택/큐][Java] 주식가격 (0) | 2026.07.29 |