https://school.programmers.co.kr/learn/courses/30/lessons/42883#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📌- 풀이
- number의 길이 만큼 for문을 돈다
- while문을 통해서 해당하는 값이 stack의 가장 위쪽에 있는 값보다 크면 stack을 pop하고 k를 --함
- pop을 다 하고 나면 push를 해서 stack을 업데이트 해줌
- stack값을 result에 옮기고 그 결과 값을 출력
이전에 같은 문제를 풀었던 경험이 있는데도, 방식은 알았지만 처음에 너무 헤맸던 것 같음. 풀었던 문제는 틀리지 말자!
🔥 - Java 코드
import java.util.*;
class Solution {
public String solution(String number, int k) {
char[] result = new char[number.length() - k];
Stack<Character> stack = new Stack<>();
for (int i=0; i<number.length(); i++) {
char c = number.charAt(i);
while (!stack.isEmpty() && stack.peek() < c && k-- > 0) {
stack.pop();
}
stack.push(c);
}
for (int i=0; i<result.length; i++) {
result[i] = stack.get(i);
}
return new String(result);
}
}