알고리즘
프로그래머스 큰 수 만들기 (JAVA)
박카스마시며코딩
2022. 6. 14. 16:56
https://programmers.co.kr/learn/courses/30/lessons/42883
코딩테스트 연습 - 큰 수 만들기
programmers.co.kr
저는 해당 문제를 그리디를 이용해 문제를 해결하였습니다.
먼저 저는 각각의 문자를 비교하여 앞에서부터 앞의 숫자가 뒤의 숫자보다 작다면 지웠습니다.
그리고 지운 횟수를 체크하면 이 값이 k보다 커지면 바로 for문에서 나오도록 구현하였습니다.
마지막으로 cnt가 k보다 작은데 for문이 끝나거나서 숫자가 모두 같거나 마지막 숫자를 지워야하는 경우가 존재하기 때문에 while문을 돌려 뒤에서부터 문자를 지워나갔습니다.
class Solution {
public String solution(String number, int k) {
String answer = "";
StringBuilder sb = new StringBuilder(number);
int cnt = 0;
for(int i = 1 ; i < sb.length() ; i++){
char prev = sb.charAt(i-1);
char now = sb.charAt(i);
if(prev < now){
sb.deleteCharAt(i-1);
if(++cnt >= k){
break;
}
i = Math.max(i-2,0);
}
}
while(cnt < k){
sb.deleteCharAt(sb.length()-1);
cnt++;
}
answer = sb.toString();
return answer;
}
}