붕어의 개발 기록
8월 10일 99클럽 항해 20일 본문
반응형
99클럽 항해 20일차
오늘의 문제는 큰 수 만들기이다.

문제에서 주어지는 문자열에서 숫자를 추출해내어 크기를 비교하여 가장 큰 수를 반환하는 문제이다.
-> 스택을 사용하여서 숫자를 왼쪽에서부터 순차적으로 읽으면서, 현재 숫자가 스택의 마지막 숫자보다 크면 스택에서 숫자를 제거한다.
-> 제거한 숫자의 수가 k가 될때까지 반복한다.
-> 최종적으로 남은 숫자들을 스택에 저장합니다.
-> 스택의 숫자들을 문자열로 변환하여 결과를 반환합니다.
순으로 문제를 해결하였다.
import java.util.Stack;
public class Solution {
public static String solution(String number, int k) {
Stack<Character> stack = new Stack<>();
int len = number.length();
for (int i = 0; i < len; i++) {
char current = number.charAt(i);
// k개 숫자를 제거할 때까지 스택의 마지막 숫자와 비교
while (k > 0 && !stack.isEmpty() && stack.peek() < current) {
stack.pop();
k--;
}
stack.push(current);
}
// 만약 k가 0이 되지 않았으면 남아있는 k개를 제거
while (k > 0) {
stack.pop();
k--;
}
// 스택의 숫자들을 문자열로 변환
StringBuilder answer = new StringBuilder();
for (char c : stack) {
answer.append(c);
}
return answer.toString();
}
}
반응형
'항해99(2024-07~08) > 99클럽 하루 한문제' 카테고리의 다른 글
| 8월 12일 99클럽 항해 22일 (0) | 2024.08.12 |
|---|---|
| 8월 11일 99클럽 항해 21일 (0) | 2024.08.11 |
| 8월 9일 99클럽 항해 19일 (0) | 2024.08.09 |
| 8월 8일 99클럽 항해 18일 (0) | 2024.08.09 |
| 8월 7일 99클럽 항해 17일 (0) | 2024.08.08 |