-
[코딩테스트] 프로그래머스 - 큰 수 만들기(Java, Level2, 실패코드)코딩테스트/프로그래머스 2022. 12. 9. 00:24728x90
안녕하세요~
오늘은 나름 긴시간동안 머리를 싸매고 풀었지만 실패한 문제에 대해 기록해보고자 합니다.
꽤 많은 시간을 쏟아부었는데 아쉽네요 ㅠㅠ
다른분들은 다똑같이 풀었던데 정말 생각이 그렇게 나는건지... 아니면 다른분들꺼보고 그렇게 이해를 하신건지..
어렵습니다 참🤣
저는 테스트케이스10번에서 시간초과가 나오네요~
혹시라도 수정해서 시간을 더 단축할 수 있는 부분이 있다면 댓글 부탁드립니다. :D
https://school.programmers.co.kr/learn/courses/30/lessons/42883
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
제가 작성한 코드입니다.
import java.lang.*; class Solution { public String solution(String number, int k) { StringBuffer sb=new StringBuffer(number); int start=0; for(int i=0;i<k;i++) { for(int j=start;j<sb.length()-1;j++) { if(sb.charAt(j)=='9') continue; int a1=sb.charAt(j)-'0'; int a2=sb.charAt(j+1)-'0'; if(a1<a2) { if(a1==9) start=j; sb.deleteCharAt(j); break; } } } String answer = sb.toString(); if(sb.length()>number.length()-k) { answer=answer.substring(0,number.length()-k); } return answer; } }
나름 StringBuffer까지 써가며 String에서 시간도 줄였지만 여전히 시간초과입니다.
j번째와 j+1번째를 비교해 j번째가 더 작은걸 찾는걸 k번 반복한다 입니다.
또한 9에대한 처리는
예를들어 숫자가 '9993124'라면 앞의 999는 더이상 볼 필요가 없는 수이기에 index를 설정해 범위를 조금이라도 줄이고자 했습니다.
코딩 어렵네요 ㅠㅠ
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[코딩테스트] 프로그래머스 - 삼각 달팽이(Java, Level2) (0) 2022.12.10 [코딩테스트] 프로그래머스 - 우유와 요거트가 담긴 장바구니(MySQL, Level4) (0) 2022.12.09 [코딩테스트] 프로그래머스 - 식품분류별 가장 비싼 식품의 정보 조회하기(MySQL, Level4) (0) 2022.12.07 [코딩테스트] 프로그래머스 - 124 나라의 숫자(Java, Level2) (0) 2022.12.07 [코딩테스트] 프로그래머스 - 5월 식품들의 총매출 조회하기(MySQL, Level4) (0) 2022.12.07