프로그래머스 코딩테스트(배열의 원소 삭제하기, 가까운 1 찾기, 중복된 문자 제거)
<배열의 원소 삭제하기>
문제 설명
정수 배열 arr과 delete_list가 있습니다. arr의 원소 중 delete_list의 원소를 모두 삭제하고 남은 원소들은 기존의 arr에 있던 순서를 유지한 배열을 return 하는 solution 함수를 작성해 주세요.
풀이
class Solution {
public int[] solution(int[] arr, int[] delete_list) {
int[] arr1 = new int[arr.length];
int n = 0;
for(int i=0;i<arr.length;i++){
int num =0;
for(int j=0;j<delete_list.length;j++){
if(arr[i]==delete_list[j]){
num=1;
break;
}
}
if(num==1) continue;
arr1[n] = arr[i];
n++;
}
int[] answer = new int[n];
for(int k=0;k<n;k++){
answer[k] = arr1[k];
}
return answer;
}
}
다른 사람 풀이
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[] delete_list) {
List<Integer> list = new ArrayList<>();
for(int n : arr) {
list.add(n);
}
for(int n: delete_list) {
list.remove((Integer)n);
}
int[] answer = new int[list.size()];
for(int i=0; i<list.size(); i++){
answer[i] = list.get(i);
}
return answer;
}
}
<가까운 1 찾기>
문제 설명
정수 배열 arr가 주어집니다. 이때 arr의 원소는 1 또는 0입니다. 정수 idx가 주어졌을 때, idx보다 크면서 배열의 값이 1인 가장 작은 인덱스를 찾아서 반환하는 solution 함수를 완성해 주세요.
단, 만약 그러한 인덱스가 없다면 -1을 반환합니다.
풀이
class Solution {
public int solution(int[] arr, int idx) {
int answer = -1;
for(int i=idx;i<arr.length;i++){
if(arr[i]==1) return i;
}
return answer;
}
}
<중복된 문자 제거>
문제 설명
문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요.
풀이
class Solution {
public String solution(String my_string) {
String answer = "";
for(int i=0;i<my_string.length();i++){
if(!answer.contains(my_string.charAt(i)+""))
answer += my_string.charAt(i);
}
return answer;
}
}