▸ k번째 수
▸ 두 개 뽑아서 더하기
▸ 가장 가까운 같은 글자
▸ k번째 수 : Lv.1
출처: 프로그래머스 코딩테스트 연습 > 정렬 > k번째 수
import java.util.List;
import java.util.ArrayList;
import java.util.Collections;
class Solution {
public int[] solution(int[] array, int[][] commands) {
int length = commands.length;
int[] answer = new int[length];
for(int n = 0; n < commands.length; n++){
int i = commands[n][0];
int j = commands[n][1];
int k = commands[n][2];
List<Integer> list = new ArrayList<>();
for(int a = i-1; a <= j-1; a++){
list.add(array[a]);
}
Collections.sort(list);
answer[n] = list.get(k-1);
list.clear();
}
return answer;
}
}
▸ 두 개 뽑아서 더하기 : Lv.1
출처: 프로그래머스 코딩테스트 연습 > 월간 코드 챌린지 시즌1 > 두 개 봅아서 더하기
import java.util.ArrayList;
import java.util.List;
import java.util.Collections;
class Solution {
public int[] solution(int[] numbers) {
List<Integer> list = new ArrayList<>();
for(int i = 0; i < numbers.length-1; i++){
for(int j = i+1; j < numbers.length; j++){
int result = numbers[i] + numbers[j];
if(list.contains(result)){
continue;
}
list.add(result);
}
}
Collections.sort(list);
int[] answer = new int[list.size()];
for(int i = 0 ; i < answer.length; i++){
answer[i] = list.get(i);
}
return answer;
}
}
▸ 가장 가까운 같은 글자 : Lv.1
출처: 프로그래머스 코딩테스트 연습 > 연습문제 > 가장 가까운 같은 글자
[오답 코드]
import java.util.ArrayList;
import java.util.List;
class Solution {
public int[] solution(String s) {
char[] charArray = s.toCharArray();
int length = charArray.length;
int[] answer = new int[length];
List<Character> list = new ArrayList<>();
for(int i = 0; i < length; i++){
if(list.contains(charArray[i])){
int index = list.indexOf(charArray[i]);
list.add(charArray[i]);
answer[i] = i - index;
} else {
list.add(charArray[i]);
answer[i] = -1;
}
}
return answer;
}
}
[수정 코드]
import java.util.ArrayList;
import java.util.List;
class Solution {
public int[] solution(String s) {
char[] charArray = s.toCharArray();
int length = charArray.length;
int[] answer = new int[length];
List<Character> list = new ArrayList<>();
int index = 0;
for(int i = 0; i < length; i++){
if(list.contains(charArray[i])){
for(int j = 0; j < list.size(); j++){
if(list.get(j).equals(charArray[i])){
index = j;
}
}
list.add(charArray[i]);
answer[i] = i - index;
} else {
list.add(charArray[i]);
answer[i] = -1;
}
}
return answer;
}
}
❗️ 코드를 실행했더니 시간이 오래걸리는 것 같다. 해당 코드의 실행 시간을 더 줄이는 방향으로 코드를 수정해야겠다고 생각했다.