-
프로그래머스 42883 큰 수 만들기 (미해결)카테고리 없음 2023. 5. 15. 22:31
https://school.programmers.co.kr/learn/courses/30/lessons/42883
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

꼬박 하루를 다시 봤는데도 테스트 케이스 10번에 대해선 시간초과를 잡지 못했다.
10번 시간 초과 오답 (stack)
import java.util.*; class Solution { public String solution(String number, int k) { String answer = ""; char []ans= new char[number.length()-k]; Stack<Character> st = new Stack<>(); int a = 0; int index= 0; int tmpi = 0; for(int j=0;j<number.length()-k;j++) { a = index; boolean ch =false; for (int i = a; i <= k+j; i++) { if (i==a) st.push(number.charAt(i)); else if (st.peek() < number.charAt(i)) { st.pop(); st.push(number.charAt(i)); index = i+1; ch = true; } } if(!ch) index++; } for(char c : st){ answer+=c; } return answer; } }9,10번 시간 초과 오답
public static String solution(String number, int k) { String answer = ""; char []ans= new char[number.length()-k]; int ansLen = number.length()-k; int numberLen = number.length(); int i; int j=0; // ans 인덱스 int tempi=0; while(true){ i = tempi; ans[j] = number.charAt(i); tempi ++; if(i == numberLen-ansLen){ answer+=number.substring(i,numberLen); break; } for(int a=i+1;a<=numberLen-ansLen;a++){ char c = number.charAt(a); if(c>ans[j]){ ans[j] = c; tempi = a+1; } } answer+=ans[j]; ansLen--; if(ansLen==0) break; j++; } return answer; }