728x90
코딩 테스트 풀이 체크리스트 |
|
2시간 내에 풀었는가? | O |
본인의 실력으로 풀었는가? | O |
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
import java.util.*;
class Solution {
//String으로 문자열 붙이기를 하면 시간을 많이 차지 하기 때문에 일단 StringBuilder로 선언
StringBuilder answer;
public String solution(String number, int k) {
answer = new StringBuilder(); //빈 StringBuilder
int[] num = new int[number.length()]; //number를 숫자 배열로 담을 배열 선언
//한 자리씩 잘라가면서 int형으로 변환하고, 배열에 담기
for (int i = 0; i < num.length; i++) {
num[i] = Integer.parseInt(number.substring(i, i+1));
}
int count = num.length - k; //만들어야할 숫자 자리 수
int start = 0;
while (count > 0) { count가 0이 될 때까지 반복하기
start = func(num, count, start);
count--;
}
return answer.toString();
}
public int func(int[] n, int count, int start) {
int max = n[start];
int index = start;
start부터 전체 자리 수 - 만들어야할 자리 수의 위치 중 가장 큰 숫자 찾기
for (int i = start; i <= n.length - count; i++) {
if (n[i] > max) {
max = n[i];
index = i;
}
}
//찾으면 answer에 붙이고, index 리턴하기
answer.append(max);
return index+1;
}
}
테스트 1 〉 | 통과 (0.04ms, 75.8MB) |
테스트 2 〉 | 통과 (0.05ms, 77MB) |
테스트 3 〉 | 통과 (0.10ms, 76.5MB) |
테스트 4 〉 | 통과 (0.96ms, 79.8MB) |
테스트 5 〉 | 통과 (0.99ms, 77.7MB) |
테스트 6 〉 | 통과 (10.74ms, 75.9MB) |
테스트 7 〉 | 통과 (18.09ms, 85.1MB) |
테스트 8 〉 | 통과 (59.74ms, 79.6MB) |
테스트 9 〉 | 통과 (32.33ms, 103MB) |
테스트 10 〉 | 통과 (1755.88ms, 115MB) |
테스트 11 〉 | 통과 (0.03ms, 84.8MB) |
테스트 12 〉 | 통과 (0.04ms, 74.2MB) |
테스트 케이스 1번인 1924로 코드 풀이를 해보자면
더보기
이건 아마 예전에 다른 사람거 코드 보고 풀었을 확률이 높음
import java.util.*;
class Solution {
public String solution(String number, int k) {
char[] data = number.toCharArray();
int k1 = k;
for (int i = 0; i < data.length - 1; i++){
if (data[i] < data[i+1]){
for (int j = i; j >= 0; j--){
if (data[j] >= data[i+1]){
break;
}
if (k1 == 0) break;
if (data[j] != 0 && data[j] < data[i+1]){
data[j] = 0;
k1--;
}
}
}
if (k1 == 0) break;
}
char[] answer = new char[number.length() - k];
int position = 0;
for (int i = 0; i < data.length; i++){
if (data[i] != 0){
answer[position] = data[i];
position++;
}
if (position == answer.length) break;
}
return new String(answer);
}
}
728x90
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Java] 프로그래머스 - 등굣길 (3단계) (0) | 2022.07.27 |
---|---|
[JavaScript] 프로그래머스 - 큰 수 만들기 (2단계) (0) | 2022.07.25 |
[JavaScript] 프로그래머스 - 카펫 (2단계) (0) | 2022.07.22 |
[Java] 프로그래머스 - 카펫 (2단계) (0) | 2022.07.22 |
[JavaScript] 프로그래머스 - H-Index (2단계) (0) | 2022.07.21 |