본문 바로가기
코딩테스트/프로그래머스 기초

[코딩테스트 Lv.0] 배열의 원소 삭제하기

by 블루데이제이 2024. 6. 7.
728x90
반응형
문제 설명

정수 배열 arr과 delete_list가 있습니다. arr의 원소 중 delete_list의 원소를 모두 삭제하고 남은 원소들은 기존의 arr에 있던 순서를 유지한 배열을 return 하는 solution 함수를 작성해 주세요.

제한사항
1 ≤ arr의 길이 ≤ 100
1 ≤ arr의 원소 ≤ 1,000
arr의 원소는 모두 서로 다릅니다.
1 ≤ delete_list의 길이 ≤ 100
1 ≤ delete_list의 원소 ≤ 1,000
delete_list의 원소는 모두 서로 다릅니다.
입출력 예
arr				delete_list			result
[293, 1000, 395, 678, 94]	[94, 777, 104, 1000, 1, 12]	[293, 395, 678]
[110, 66, 439, 785, 1]		[377, 823, 119, 43]		[110, 66, 439, 785, 1]
입출력 설명
입출력 예 #1
예제 1번의 arr의 원소 중 1000과 94가 delete_list에 있으므로 이 두 원소를 삭제한 [293, 395, 678]을 return 합니다.

입출력 예 #2
예제 2번의 arr의 원소 중 delete_list에 있는 원소는 없습니다. 따라서 arr 그대로인 [110, 66, 439, 785, 1]을 return 합니다.

내 풀이
Java
import java.util.*;
class Solution {
    public int[] solution(int[] arr, int[] delete_list) {
        int[] answer = {};
        
        List<Integer> list = new ArrayList<>();
        
        for(int i = 0; i < arr.length; i++){
            boolean isDeleted = false;
            for(int j = 0; j < delete_list.length; j++){
                if(arr[i] == delete_list[j]) {
                    isDeleted = true;
                    break;
                }
            }
            
            if(!isDeleted) list.add(arr[i]);
        }
        
        answer = list.stream().mapToInt(Integer::intValue).toArray();
        
        return answer;
    }
}
C
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// arr_len은 배열 arr의 길이입니다.
// delete_list_len은 배열 delete_list의 길이입니다.
int* solution(int arr[], size_t arr_len, int delete_list[], size_t delete_list_len) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    int* answer = (int*)malloc(sizeof(int*) * arr_len);
    
    int i, j;
    int k = 0;
    for(i = 0; i < arr_len; i++){
        int isDeleted = 0;
        for(j = 0; j < delete_list_len; j++){
            if(arr[i] == delete_list[j]){
                isDeleted = 1;
                break;
            }
        }
        if(isDeleted == 0) answer[k++] = arr[i];
    }
    answer[k] = '0';
    return answer;
}
Python
def solution(arr, delete_list):
    answer = []
    
    for i in arr:
        isDeleted = False
        for j in delete_list:
            if i == j:
                isDeleted = True
        if isDeleted == False:
            answer.append(i)
    return answer

https://school.programmers.co.kr/learn/courses/30/lessons/181844

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

728x90
반응형