일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- vrm posing desktop
- 배열 리스트
- 닌텐도 스위치 2
- 영어
- 그리디 알고리즘
- 스택
- 코딩테스트
- VRoid Studio
- c#
- 택시 기하학
- 라자냐
- 브루트포스 알고리즘
- unity engine
- 빅오 표기법
- 그래픽 디자인
- 마인크래프트
- 카니발대학교 공대강국
- 다이나믹프로그래밍
- blender
- URP
- 잴다의 전설 티어스 오브 더 킹덤
- 하이테일
- windows 12
- 2025 대한민국 채용박람회
- 시작
- 자료구조
- i자형 인재
- Probuilder
- 병역일터
- 큐
Archives
- Today
- Total
WalkerJei's Lifelog
백준알고리즘 1181번 단어 정렬 C# 본문
세부 정보
- 사이트: 백준알고리즘
- 번호: 1181
- 문제명: 단어 정렬
- 언어: C#
- 분류: 문자열, 정렬
- 비고:
문제
알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오.
- 길이가 짧은 것부터
- 길이가 같으면 사전 순으로
단, 중복된 단어는 하나만 남기고 제거해야 한다.
입력
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
출력
조건에 따라 정렬하여 단어들을 출력한다.
풀이
Linq를 사용한다.
Distinct()는 중복된 데이터를 제거한다.
ToList()는 리스트로 형식을 전환해준다.
OrderBy()의 괄호 안에 정렬 기준을 넣을 수 있다. 여기서는 단어의 길이로 했다.
using System.Linq;
using System.Text;
class Findword
{
static void Main(String[] args)
{
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
// 입력받은 단어를 저장할 리스트
List<string> list = new List<string>();
// 입력할 단어 개수
int n = Convert.ToInt32(sr.ReadLine());
for (int i = 0; i < n; i++)
{
// 단어를 입력받는다.
string input = sr.ReadLine();
// 입력받은 단어를 리스트에 소문자로 바꿔서 저장한다.
list.Add(input.ToLower());
}
// 리스트 내 중복된 단어를 제거한다.
list = list.Distinct().ToList();
// 리스트를 오름차순으로 정렬한다.
list.Sort();
// 리스트 내의 단어들을 길이 순으로 정렬한다
list = list.OrderBy(x => x.Length).ToList();
// 리스트 내 단어 출력
foreach (string output in list)
sw.WriteLine(output);
sr.Close();
sw.Close();
}
}
후기
이번에는 이례적으로 Class와 static void Main(String[] args) 안에서 진행했다. 여기서 Main은 대문자로 써야 하며 main으로 쓰면 오류가 날 수 있다. 그렇지만 빨간 밑줄이 뜨지 않기 때문에 오류가 났다고 인식하기 어렵다. 이렇게도 해본 이유는 실제 코딩테스트 정답 제출 양식이 정해져 있을 수 있기 때문에 그렇게 했다. 정렬 기준이 (x => x.Length)라는 방법으로 쓰이는 것을 확인했다. 피드백 끝에 풀기는 했지만 SQL이 아니라 일반적인 프로그래밍 언어로 대량의 데이터를 처리할려면 무엇을 해야 할 지 생각해야겠다.
'소프트웨어 개발 > 코딩테스트(기성 문제)' 카테고리의 다른 글
백준알고리즘 1978번 소수 찾기 C# (0) | 2025.05.07 |
---|---|
백준알고리즘 11005번 진법 변환 2 C# (0) | 2025.05.03 |
백준알고리즘 14659번 한조서열정리하고옴ㅋㅋ C# (0) | 2025.04.30 |
백준알고리즘 2217번 로프 C# (0) | 2025.04.29 |
백준알고리즘 11399번 ATM C# (0) | 2025.04.28 |