일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 2025 대한민국 채용박람회
- 닌텐도 스위치 2
- Probuilder
- 큐
- 시작
- windows 12
- 그래픽 디자인
- 잴다의 전설 티어스 오브 더 킹덤
- 스택
- 코딩테스트
- 이진 탐색
- 라자냐
- URP
- 병역일터
- i자형 인재
- c#
- unity engine
- 자료구조
- 배열 리스트
- 다이나믹프로그래밍
- 마인크래프트
- 그리디 알고리즘
- blender
- 브루트포스 알고리즘
- 영어
- vrm posing desktop
- 빅오 표기법
- 택시 기하학
- 카니발대학교 공대강국
- VRoid Studio
Archives
- Today
- Total
WalkerJei's Lifelog
백준알고리즘 11656번 접미사 배열 C# 본문
세부 정보
- 사이트: 백준알고리즘
- 번호: 11656
- 문제명: 접미사 배열
- 언어: C#
- 분류: 문자열, 정렬
- 비고:
문제
접미사 배열은 문자열 S의 모든 접미사를 사전순으로 정렬해 놓은 배열이다.
baekjoon의 접미사는 baekjoon, aekjoon, ekjoon, kjoon, joon, oon, on, n 으로 총 8가지가 있고, 이를 사전순으로 정렬하면, aekjoon, baekjoon, ekjoon, joon, kjoon, n, on, oon이 된다.
문자열 S가 주어졌을 때, 모든 접미사를 사전순으로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000보다 작거나 같다.
출력
첫째 줄부터 S의 접미사를 사전순으로 한 줄에 하나씩 출력한다.
풀이
접미사에서 문자열의 맨 뒤는 항상 고정적으로 나온다. 따라서 i번째 위치부터 시작해 (전체 길이 - i)번째 위치를 Substring() 함수에 넣으면 접미사를 쉽게 추출할 수 있다.
추출한 접미사들을 오름차순으로 정렬할 때는 OrderBy() 함수를 이용하면 된다.
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
// 문자열 입력을 받는다
string s = sr.ReadLine();
// 접미사를 저장할 배열
string[] suffix = new string[s.Length];
// 접미사 추출
for (int i = 0; i < s.Length; i++)
suffix[i] = s.Substring(i, s.Length - i);
// 접미사 출력
foreach (string output in suffix.OrderBy(x => x))
sw.WriteLine(output);
sr.Close();
sw.Close();
후기
이 문제는 너무나도 순조롭게 풀려서 놀랐다. 심지어 내림차순 정렬이 되게 코드를 작성한 것을 오름차순 정렬로 정정하는 과정도 너무 간단하게 해결되었다. 정답도 손쉽게 나오면서 고구마를 먹다가 사이다를 마시는 느낌을 받았다. 실력 발휘가 잘 된 듯하다. 좀더 어려운 문제도 이렇게 잘 풀리기를 원하고 있다.
'소프트웨어 개발 > 코딩테스트(기성 문제)' 카테고리의 다른 글
백준알고리즘 5597번 과제 안 내신 분..? C# (1) | 2025.04.19 |
---|---|
백준알고리즘 1100번 하얀 칸 C# (0) | 2025.04.18 |
백준알고리즘 1427번 소트인사이드 C# (1) | 2025.04.17 |
백준알고리즘 7785번 회사에 있는 사람 C# (0) | 2025.04.15 |
백준알고리즘 11721번 열 개씩 끊어 출력하기 C# (0) | 2025.04.14 |