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

[C#][프로그래머스 > 코딩테스트 기초] 배열의 원소 삭제하기

by 스누누피 2024. 8. 12.

프로그래머스 > 코딩테스트 연습 > 코딩 기초 트레이닝 > 배열의 원소 삭제하기

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

 

📒 문제

정수 배열 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 합니다.

💻 소스코드

using System;
using System.Linq;

public class Solution {
    public int[] solution(int[] arr, int[] delete_list) {
        return arr.Where(w => !delete_list.Contains(w)).ToArray();
    }
}

 

 

다른풀이

using System;
using System.Linq;

public class Solution {
    public int[] solution(int[] arr, int[] delete_list) {
        return arr.Except(delete_list).ToArray();
    }
}

 

참고 사이트

Except : https://learn.microsoft.com/ko-kr/dotnet/api/system.linq.enumerable.except?view=net-8.0

📝 풀이

첫번째 풀이는 Where 메서드를 이용해서 각 요소가 delete_list에 포함되어 있지 않다면 반환하도록 하였다.

 

다른 사람들의 풀이를 찾아보다 시퀀스를 비교해서 바로 제외시켜주는 메서드가 있어서 가져와보았다.

Except 메서드를 사용하면 매개변수로 받는 동일한 타입의 시퀀스에 담긴 요소와 비교해서 같은 요소를 제외한 시퀀스를 반환한다.


관련 포스팅

 

[C# 문법] List 메서드 모음

최근 수정: 2024.08.01List 메서드 내용 중 새로 알게되거나 사용했던 메서드들 기록하는 곳입니다. 주요 메서드Count : 리스트의 길이를 반환한다.List lst = new List();lst.Add(1);lst.Add(2);lst.Add(3);Console.Write

twd0622.tistory.com

 

[C# 문법] Enumerable 클래스

최근 수정: 2024.08.12Enumerable 클래스 내용 중 새로 알게되거나 사용했던 메서드들 기록하는 곳입니다. Enumerable 클래스Enumerable 클래스는 LINQ의 일부로 IEnumerable 인터페이스를 구현하는 컬렉션 클래

twd0622.tistory.com