[JAVA 문제 풀이] 359. 큰 수 만들기

프로그래머스 (42883)
Stupefyee's avatar
Jul 03, 2025
[JAVA 문제 풀이] 359. 큰 수 만들기
notion image
 

내가 작성한 코드

import java.util.*; class Solution { public String solution(String number, int k) { Deque<Character> stack = new ArrayDeque<>(); // 스택을 사용하여 숫자를 저장 for (char num : number.toCharArray()) { // 스택에서 뒤의 숫자가 더 작으면 제거 while (!stack.isEmpty() && k > 0 && stack.peekLast() < num) { stack.pollLast(); k--; } stack.offerLast(num); } // 아직 제거해야 할 숫자가 남았다면 뒤에서 제거 >> 큰수가 앞에 있는 경우 while (k > 0) { stack.pollLast(); k--; } StringBuilder answer = new StringBuilder(); for (char c : stack) { answer.append(c); } return answer.toString(); } }
  • Deque : 앞 뒤로 삽입, 삭제가 가능한 큐
 

다른 사람의 코드

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); // 스택이 비어있지 않고, 현재 문자 c가 스택의 top보다 크며, k가 0보다 클 때 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); } }
 
Share article

stupefyee