[BAEKJOON] 백준 11728: 배열 합치기 (C#)
2024. 8. 7. 09:58ㆍIT/BaekJoon
문제 링크
https://www.acmicpc.net/problem/11728
문제
정렬되어있는 두 배열 A와 B가 주어진다. 두 배열을 합친 다음 정렬해서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000)
둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거나 같은 정수이다.
출력
첫째 줄에 두 배열을 합친 후 정렬한 결과를 출력한다.
통과한 답안
using System.Text;
namespace _11728
{
internal class Program
{
static void Main(string[] args)
{
string[] inputs = Console.ReadLine().Split(' ');
int N = int.Parse(inputs[0]);
int M = int.Parse(inputs[1]);
StringBuilder sb = new StringBuilder();
int[] arrN = new int[N];
int[] arrM = new int[M];
arrN = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
arrM = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
int[] arrSum = new int[N + M];
Array.Copy(arrN, arrSum, N);
Array.Copy(arrM, 0, arrSum, N, M);
Array.Sort(arrSum);
foreach (int i in arrSum)
{
sb.Append(i + " ");
}
Console.WriteLine(sb.ToString().TrimEnd());
}
}
}
두 개의 배열이 주어졌을 때, 두 배열을 합친 후에 정렬하여 출력하는 문제이다.
풀이에 사용한 방법은 C#의 Array 메서드를 이용한 방법인데,
크기가 N인 배열 arrN과 크기가 M인 배열 arrM을 미리 선언한 후에 입력값들을 받은 후에
이 둘을 합치려는 배열 arrSum(크기가 N + M)을 선언하고
(0 ~ N - 1) 범위에는 arrN을 Copy하고, (N ~ N + M - 1) 범위에는 arrM을 Copy하였다.
이후에 이를 정렬한 후에 StringBuilder를 이용하여 하나의 문자열로 만든 후에 출력하도록 구현하였다.
이 문제를 풀이하면서 C#의 Array 메서드들을 공부할 수 있었는데
만약 두 배열에서 중복되는 값이 있다면 하나만 취하는 경우에는
Union(합집합)이라는 메서드를 이용할 수 있었을 것을 알 수 있었다.
'IT > BaekJoon' 카테고리의 다른 글
[BAEKJOON] 백준 9070: 장보기 (C#) (0) | 2024.08.13 |
---|---|
[BAEKJOON] 백준 9046: 복호화 (C#) (0) | 2024.08.13 |
[BAEKJOON] 백준 10480: Oddities (C#) (0) | 2024.08.07 |
[BAEKJOON] 백준 14011: Small PhD Restaurant (C#) (0) | 2024.08.05 |
[BAEKJOON] 백준 31846: 문자열 접기 (C#) (0) | 2024.08.05 |