728x90
문제 링크 : https://www.acmicpc.net/problem/11651
목차
1 설명
2 내 코드
4 실행 결과
설명
백준 실버 5 문제 입니다.
내 코드
StreamWriter _writer = new StreamWriter(Console.OpenStandardOutput());
StreamReader _reader = new StreamReader(Console.OpenStandardInput());
int n = int.Parse(_reader.ReadLine());
List<(int, int)> list = new List<(int, int)>();
for (int i = 0; i < n; i++)
{
string[] str = _reader.ReadLine().Split();
int x = int.Parse(str[0].ToString());
int y = int.Parse(str[1].ToString());
list.Add((x, y));
}
var sortList = list.OrderBy(x => x.Item2).ThenBy(x => x.Item1).ToList();
for (int j = 0; j < n; j++)
{
_writer.WriteLine($"{sortList[j].Item1} {sortList[j].Item2}");
}
_writer.Close();
_reader.Close();
문제 풀이 해석 내용
StreamWriter와 StreamReader 초기화
StreamWriter _writer = new StreamWriter(Console.OpenStandardOutput());
StreamReader _reader = new StreamReader(Console.OpenStandardInput());
StreamWriter를 사용하여 콘솔에 출력할 준비를 합니다.
StreamReader를 사용하여 콘솔로부터 입력을 받을 준비를 합니다.
입력받기
int n = int.Parse(_reader.ReadLine());
List<(int, int)> list = new List<(int, int)>();
첫 번째 줄에서 정수 n을 읽어들입니다.
좌표 쌍을 저장할 리스트를 초기화합니다.
좌표 쌍 입력받기
for (int i = 0; i < n; i++)
{
string[] str = _reader.ReadLine().Split();
int x = int.Parse(str[0].ToString());
int y = int.Parse(str[1].ToString());
list.Add((x, y));
}
반복문을 통해 n개의 좌표 쌍을 입력받습니다.
각 좌표는 공백으로 구분되어 있습니다.
이를 split 하여 x와 y 값을 추출한 후, 리스트에 추가합니다.
정렬하기
var sortList = list.OrderBy(x => x.Item2).ThenBy(x => x.Item1).ToList();
입력받은 좌표 리스트를 y 값 기준으로 오름차순 정렬합니다.
y 값이 같을 경우, x 값 기준으로 오름차순 정렬합니다.
정렬된 결과 출력하기
for (int j = 0; j < n; j++)
{
_writer.WriteLine($"{sortList[j].Item1} {sortList[j].Item2}");
}
정렬된 리스트를 순회하며 각 좌표 쌍을 출력합니다.
리소스 정리
_writer.Close();
_reader.Close();
사용한 StreamWriter와 StreamReader를 닫아 리소스를 정리합니다.
실행 결과
728x90
'C#' 카테고리의 다른 글
백준 C# 15829 문제 풀이 (0) | 2024.09.24 |
---|---|
백준 C# 10814 문제 풀이 (0) | 2024.09.23 |
백준 C# 11050 문제 풀이 (0) | 2024.09.21 |
백준 C# 28702 문제 풀이 (0) | 2024.09.21 |
백준 C# 10798 문제 풀이 (0) | 2024.09.20 |