두 배열을 합치는 방법
이번 포스팅은 C#에서 두 배열을 연결하여 새로운 배열을 만드는 몇 가지 방법을 소개합니다.
방법 1. 반복문
가장 심플한 방법으로 반복문을 사용할 수 있습니다.
[합치는 방법]
순서 1. 두 배열의 길이를 더한 값을 새로운 배열의 크기로 설정하여 새로운 배열을 생성합니다.
순서 2. 첫 번째 배열을 순회하여 새로운 배열에 값을 추가합니다.
순서 3. 두 번째 배열을 순회하여 새로운 배열에 값을 추가합니다.
다음 예제는 반복문을 사용하여 두 배열이 합쳐진 새로운 배열을 생성합니다.
class Program
{
static void Main(string[] args)
{
int[] intArray1 = { 0, 10, 20 };
int[] intArray2 = { 30, 40, 50 };
int[] newArray = new int[intArray1.Length + intArray2.Length];
int index = 0;
foreach(int num in intArray1)
{
newArray[index++] = num;
}
foreach (int num in intArray2)
{
newArray[index++] = num;
}
Console.WriteLine("intArray1: " + string.Join(", ", intArray1));
Console.WriteLine("intArray2: " + string.Join(", ", intArray2));
Console.WriteLine("newArray: " + string.Join(", ", newArray));
}
}
[실행 결과]
intArray1: 0, 10, 20
intArray2: 30, 40, 50
newArray: 0, 10, 20, 30, 40, 50
방법 2. Array 클래스의 CopyTo 메서드
두 번째 방법으로 Array 클래스에서 제공하는 CopyTo() 메서드를 사용하여 두 배열을 합칠 수 있습니다.
public void CopyTo(Array array, int index);
첫 번째 매개변수에 새로운 배열을 전달하고 두 번째 매개변수에 값이 추가되는 새로운 배열의 위치를 전달합니다.
[합치는 방법]
순서 1. 두 배열의 길이를 더한 값을 새로운 배열의 크기로 설정하여 새로운 배열을 생성합니다.
순서 2. 첫 번째 배열에서 CopyTo() 메서드를 호출하고 첫 번째 매개변수에 새로운 배열을 전달하고 두 번째 매개변수에 0을 전달합니다.
순서 3. 두 번째 배열에서 CopyTo() 메서드를 호출하고 첫 번째 매개변수에 새로운 배열을 전달하고 두 번째 매개변수에 첫 번째 배열의 길이를 전달합니다.
다음 예제는 CopyTo() 메서드를 사용하여 두 배열이 합쳐진 새로운 배열을 생성합니다.
class Program
{
static void Main(string[] args)
{
int[] intArray1 = { 0, 10, 20 };
int[] intArray2 = { 30, 40, 50 };
int[] newArray = new int[intArray1.Length + intArray2.Length];
intArray1.CopyTo(newArray, 0);
intArray2.CopyTo(newArray, intArray1.Length);
Console.WriteLine("intArray1: " + string.Join(", ", intArray1));
Console.WriteLine("intArray2: " + string.Join(", ", intArray2));
Console.WriteLine("newArray: " + string.Join(", ", newArray));
}
}
[실행 결과]
intArray1: 0, 10, 20
intArray2: 30, 40, 50
newArray: 0, 10, 20, 30, 40, 50
방법 3. Array 클래스의 Resize 메서드와 Copy 메서드
세 번째 방법으로 Array 클래스의 Resize() 메서드와 Copy() 메서드를 사용할 수 있습니다.
이 방법은 새로운 배열을 생성하지 않고 기존 배열에 값을 추가합니다.
Array 클래스의 Resize() 메서드는 기존 배열의 크기를 변경하는 목적으로 사용됩니다.
public static void Resize<T>([NotNull] ref T[]? array, int newSize);
첫 번째 매개변수에 ref 키워드를 사용하여 기존 배열을 전달하고 두 번째 매개변수에 변경하고자 하는 배열의 크기를 전달합니다.
Array 클래스의 Copy() 메서드는 이름 그대로 배열을 복사하는 목적으로 사용됩니다.
public static void Copy(
Array sourceArray, int sourceIndex,
Array destinationArray, int destinationIndex,
int length);
Array sourceArray
- 원본 배열입니다.
int sourceIndex
- 원본 배열의 해당 위치부터 값이 복사됩니다.
Array destinationArray
- 원본 배열에서 복사한 데이터가 추가되는 배열입니다.
int destinationIndex
- 원본 배열에서 복사한 값이 목적지 배열에 추가되는 위치입니다.
int length
- 원본 배열에서 복사되는 데이터 개수입니다.
[합치는 방법]
순서 1. Resize() 메서드를 호출하여 기존 배열의 크기를 두 배열의 길이를 더한 값으로 변경합니다.
순서 2. Copy() 메서드를 사용하여 두 번째 배열의 값을 복사합니다.
다음 예제는 Resize() 메서드와 Copy() 메서드를 사용하여 기존 배열에 값을 추가합니다.
class Program
{
static void Main(string[] args)
{
int[] intArray1 = { 0, 10, 20 };
int[] intArray2 = { 30, 40, 50 };
Array.Resize(ref intArray1, intArray1.Length + intArray2.Length);
Array.Copy(intArray2, 0, intArray1, intArray1.Length - intArray2.Length, intArray2.Length);
Console.WriteLine("intArray1: " + string.Join(", ", intArray1));
Console.WriteLine("intArray2: " + string.Join(", ", intArray2));
}
}
[실행 결과]
intArray1: 0, 10, 20, 30, 40, 50
intArray2: 30, 40, 50
방법 4. List 클래스의 AddRange 메서드
List의 AddRange() 메서드를 사용하여 두 배열이 합쳐진 새로운 배열을 생성할 수 있습니다.
AddRange() 메서드는 List에 배열 또는 컬렉션의 값을 한 번에 추가하기 위한 목적으로 사용됩니다.
public void AddRange(IEnumerable<T> collection);
[합치는 방법]
순서 1. List를 생성합니다.
순서 2. AddRange() 메서드를 호출하여 첫 번째 배열을 매개변수에 전달합니다.
순서 3. AddRange() 메서드를 호출하여 두 번째 배열을 매개변수에 전달합니다.
순서 4. List를 배열로 변환합니다.
다음 예제는 List 클래스의 AddRange() 메서드를 사용하여 두 배열이 합쳐진 새로운 배열을 생성합니다.
class Program
{
static void Main(string[] args)
{
int[] intArray1 = { 0, 10, 20 };
int[] intArray2 = { 30, 40, 50 };
List<int> newList = new List<int>();
newList.AddRange(intArray1);
newList.AddRange(intArray2);
int[] newArray = newList.ToArray();
Console.WriteLine("intArray1: " + string.Join(", ", intArray1));
Console.WriteLine("intArray2: " + string.Join(", ", intArray2));
Console.WriteLine("newArray: " + string.Join(", ", newArray));
}
}
[실행 결과]
intArray1: 0, 10, 20
intArray2: 30, 40, 50
newArray: 0, 10, 20, 30, 40, 50
방법 5. LINQ의 Concat 메서드
LINQ에서 제공하는 Concat() 메서드를 사용하여 두 배열이 합쳐진 새로운 배열을 생성할 수 있습니다.
먼저, LINQ에서 제공하는 기능을 사용하기 위해 다음 네임스페이스를 추가합니다.
using System.Linq;
Concat() 메서드는 IEnumerable 인터페이스가 구현된 클래스에서 호출할 수 있으며, 배열 또는 컬렉션과 같은 데이터 집합이 하나로 합쳐진 IEnumerable 객체를 반환합니다.
public static IEnumerable<TSource> Concat<TSource>(
this IEnumerable<TSource> first,
IEnumerable<TSource> second);
[합치는 방법]
순서 1. 첫 번째 배열에서 Concat() 메서드를 호출하고 두 번째 배열을 매개변수로 전달합니다.
순서 2. Concat() 메서드의 결과를 ToArray() 메서드를 호출하여 배열로 변환합니다.
다음 예제는 Concat() 메서드를 사용하여 두 배열이 합쳐진 새로운 배열을 생성합니다.
class Program
{
static void Main(string[] args)
{
int[] intArray1 = { 0, 10, 20 };
int[] intArray2 = { 30, 40, 50 };
int[] newArray = intArray1.Concat(intArray2).ToArray();
Console.WriteLine("intArray1: " + string.Join(", ", intArray1));
Console.WriteLine("intArray2: " + string.Join(", ", intArray2));
Console.WriteLine("newArray: " + string.Join(", ", newArray));
}
}
[실행 결과]
intArray1: 0, 10, 20
intArray2: 30, 40, 50
newArray: 0, 10, 20, 30, 40, 50
'C# > 배열' 카테고리의 다른 글
[C#]배열의 크기를 변경하는 방법 (0) | 2022.09.13 |
---|---|
[C#]배열 콘솔에 출력하는 방법 (0) | 2022.09.01 |
[C#]배열 특정 인덱스부터 자르는 방법 (0) | 2022.09.01 |
[C#]배열 마지막 요소 제거하는 방법 (0) | 2022.08.28 |
[C#]배열 복사하는 방법 (0) | 2022.08.23 |
댓글