코딩테스트

프로그래머스 코딩테스트(배열의 원소 삭제하기, 가까운 1 찾기, 중복된 문자 제거)

SOME코딩 2023. 5. 15. 16:03

<배열의 원소 삭제하기>

문제 설명
정수 배열 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;
    }
}