프로그래머스 - 큰 수 만들기

정민주·2024년 5월 31일

코테

목록 보기
60/95

문제링크

오늘은 해당 문제의 다른 사람 풀이에 대해 벽을 느끼고 왔다.

1. 나의 풀이

import java.util.*;
import java.io.*;

//for문 앞에서 부터 쭉 돌며 가장 큰 값 인덱스 찾기 -> 남은 문자열크기>= number.length-k -> sb.append하기
//1에서 찾은 인덱스를 시작 인덱스로 하고 k-- 후 다시 돌림

class Solution {
    public StringBuilder solution(String number, int k) {
        StringBuilder sb = new StringBuilder();

        int nowDex=0;
        int maxIndex=0;
        k=number.length()-k; //남아있어야 하는 문자열의 개수로 변경
        while(k>0){
            maxIndex=nowDex;
            for(int i=nowDex; i<=number.length()-k; i++) { 
                if(number.charAt(maxIndex) < number.charAt(i))  maxIndex=i;
            }
            sb.append(number.charAt(maxIndex));
            k--;
            nowDex=maxIndex+1;
        }

        return sb;
    }
}
import java.util.*;

class Solution {
    public String solution(String number, int k) {
        Stack<Character> stack = new Stack<>();
        
        for (int i = 0; i < number.length(); i++) {
            char current = number.charAt(i);
            while (!stack.isEmpty() && stack.peek() < current && k > 0) { 
                stack.pop();
                k--;
            }
            stack.push(current);
        }
        
        // k가 남아 있는 경우 스택의 끝에서부터 제거
        while (k > 0) {
            stack.pop();
            k--;
        }
        
        // Stack을 String으로 변환
        StringBuilder answer = new StringBuilder();
        for (char c : stack) {
            answer.append(c);
        }
        
        return answer.toString();
    }
}

wow stack을 이렇게 사용할 수 있구낭

0개의 댓글