배열 마지막 요소 제거하는 방법
배열은 크기가 고정되어 있으므로 C#에서 배열의 마지막 요소를 제거할 수 없습니다. 배열이 생성되면, 배열의 크기가 고정으로 설정되므로 요소를 추가하거나 제거할 수 없습니다.
하지만, 마지막 요소가 제거된 새로운 배열을 생성하는 것은 가능합니다.
이번 포스팅은 배열의 마지막 요소가 제거된 새로운 배열을 생성하는 몇 가지 방법을 소개합니다.
방법 1. List로 변환
첫 번째 방법으로 배열을 크기가 동적인 List로 변환하여 마지막 요소를 제거할 수 있습니다.
[제거 방법]
순서 1. 배열을 List로 변환합니다.
순서 2. List의 마지막 요소를 제거합니다.
순서 3. 마지막 요소가 제거된 List를 다시 배열로 변환합니다.
class Program
{
static void Main(string[] args)
{
int[] intArray = { 1, 2, 3, 4, 5 };
// 순서 1. List로 변환합니다.
List<int> intList = new List<int>(intArray);
Console.WriteLine("[삭제 전]");
foreach(int num in intArray)
{
Console.Write(num + " ");
}
// 순서 2. List의 마지막 요소를 제거합니다.
if (intList != null && intList.Count > 0)
{
intList.RemoveAt(intList.Count - 1);
}
// 순서 3. List를 다시 배열로 변환합니다.
intArray = intList.ToArray();
Console.WriteLine("\n");
Console.WriteLine("[삭제 후]");
foreach (int num in intArray)
{
Console.Write(num + " ");
}
}
}
[실행 결과]
[삭제 전]
1 2 3 4 5
[삭제 후]
1 2 3 4
방법 2. Array 클래스의 Resize 메서드
두 번째 방법으로 Array 클래스에서 제공하는 Resize() 메서드를 사용합니다.
Resize() 메서드는 배열의 크기를 조정합니다.
첫 번째 매개변수에 ref 키워드와 함께 원본 배열을 전달하고 두 번째 매개변수에 조정하고 싶은 크기를 전달합니다.
class Program
{
static void Main(string[] args)
{
int[] intArray = { 1, 2, 3, 4, 5 };
Console.WriteLine("[삭제 전]");
foreach(int num in intArray)
{
Console.Write(num + " ");
}
if (intArray != null && intArray.Length > 0)
{
Array.Resize(ref intArray, intArray.Length - 1);
}
Console.WriteLine("\n");
Console.WriteLine("[삭제 후]");
foreach (int num in intArray)
{
Console.Write(num + " ");
}
}
}
[실행 결과]
[삭제 전]
1 2 3 4 5
[삭제 후]
1 2 3 4
방법 3. LINQ의 Take 메서드
세 번째 방법으로 LINQ에서 제공하는 Take() 메서드를 사용하여 마지막 요소가 제거된 새로운 배열을 생성할 수 있습니다.
먼저, LINQ에서 제공하는 기능을 사용하기 위해 다음 네임스페이스를 추가합니다.
using System.Linq;
Take() 메서드는 배열 또는 컬렉션과 같은 데이터 집합에서 특정 개수만큼 데이터를 가져옵니다.
public static IEnumerable<TSource> Take<TSource>(this IEnumerable<TSource> source, int count);
[제거 방법]
순서 1. (배열 요소의 개수 - 1)을 Take() 메서드의 매개변수로 전달합니다.
순서 2. ToArray() 메서드를 호출하여 Take() 메서드의 반환 결과를 배열로 변환합니다.
class Program
{
static void Main(string[] args)
{
int[] intArray = { 1, 2, 3, 4, 5 };
Console.WriteLine("[삭제 전]");
foreach(int num in intArray)
{
Console.Write(num + " ");
}
if (intArray != null && intArray.Length > 0)
{
intArray = intArray.Take(intArray.Length - 1).ToArray();
}
Console.WriteLine("\n");
Console.WriteLine("[삭제 후]");
foreach (int num in intArray)
{
Console.Write(num + " ");
}
}
}
[실행 결과]
[삭제 전]
1 2 3 4 5
[삭제 후]
1 2 3 4
LINQ에서 제공하는 Take() 메서드에 대한 세부적인 내용은 아래 포스팅에서 확인할 수 있습니다.
방법 4. LINQ의 SkipLast 메서드
마지막 방법으로 LINQ에서 제공하는 SkipLast() 메서드를 사용하여 마지막 요소가 제거된 새로운 배열을 생성할 수 있습니다.
SkipLast() 메서드는 데이터 집합 뒤에서 특정 개수의 데이터가 생략된 새로운 데이터 집합을 생성합니다.
public static IEnumerable<TSource> SkipLast<TSource>(
this IEnumerable<TSource> source, int count);
[제거 방법]
순서 1. SkipLast() 메서드의 매개변수로 1을 전달합니다.
순서 2. ToArray() 메서드를 호출하여 SkipLast() 메서드의 반환 결과를 배열로 변환합니다.
class Program
{
static void Main(string[] args)
{
int[] intArray = { 1, 2, 3, 4, 5 };
Console.WriteLine("[삭제 전]");
foreach(int num in intArray)
{
Console.Write(num + " ");
}
if (intArray != null && intArray.Length > 0)
{
intArray = intArray.SkipLast(1).ToArray();
}
Console.WriteLine("\n");
Console.WriteLine("[삭제 후]");
foreach (int num in intArray)
{
Console.Write(num + " ");
}
}
}
[실행 결과]
[삭제 전]
1 2 3 4 5
[삭제 후]
1 2 3 4
'C# > 배열' 카테고리의 다른 글
[C#]배열 콘솔에 출력하는 방법 (0) | 2022.09.01 |
---|---|
[C#]배열 특정 인덱스부터 자르는 방법 (0) | 2022.09.01 |
[C#]배열 복사하는 방법 (0) | 2022.08.23 |
[C#]배열의 타입을 변경하는 방법 (0) | 2022.08.18 |
[C#]배열에서 특정 값 삭제하는 방법 (0) | 2022.08.16 |
댓글