Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- unity git
- networkobject
- Github DeskTop Merge
- 유니티
- networkobject.networkid
- m585
- networkbehaviourid
- unity 병합
- 유니티 머지
- M590
- 유니티 해상도 변경
- 깃허브 데스크탑 병합
- 유니티 브랜치 merge
- 오브젝트 깜빡임
- NavMesh
- githubdesktopmerge
- m585 수리
- m590 수리
- 유니티 해상도 설정
- Unity
- 유니티 합치기
- stateauthority
- unity merge
- nav거리
- navigation
- 유니티 해상도
- 깃허브 데스크탑 합치기
- 몬스터
- nav오브젝트사이거리
Archives
- Today
- Total
집게사장의 꿈
백준 C# 1181 단어정렬 본문
문제
주어지는 단어를 길이순서로 오름차순 정렬을 하되,
중복은 제거하고 같은 길이의 단어 내에서는 사전순으로 정렬하라
해결
단어를 정렬함에 있어 단어를 List에 담는다.
전체 리스트에서 절반씩 분할하여 길이를 비교한다.
최종적으로 나온 배열 위치 left의 특징 :
현재 left의 위치는 무조건 이전 [left-1]보다 length가 크며, 현재 위치 [left]의 length와 같거나 작다.
그 특성을 이용해서 우측으로 이동하며 같은 길이일 경우 사전 순으로 정렬을 추가적으로 진행했다.
internal class _1181 // 단어 정렬
{
static void Main(string[] args)
{
int iter = int.Parse(ReadLine());
List<string> list = new List<string>();
for(int i = 0; i < iter; i++)
{
string str = ReadLine();
if (list.Contains(str)) continue;
int left = 0;
int right = list.Count;
//left값을 기준으로 위치값 찾기
//여기서 left는 [0]이 아닌 경우 [left-1] 보다 length가 큰 경우다.
while (left < right)
{
int mid = (left + right) / 2;
if (list[mid].Length < str.Length)
left = mid + 1; // 여기서 left는 무조건적으로 left-1보다 크다는 것을 알 수 있음.
else
right = mid;
}
//같은 길이일 경우의 정렬
while (true)
{
//배열의 최대치일 경우
if (left >= list.Count) break;
//현재 다음배열보다 길이가 작은 경우
if (list[left].Length != str.Length) break;
//다음 배열보다 사전적으로 큰 경우 위치 이동
if (list[left].CompareTo(str) < 0) left++;
else break;
}
//삽입.
//left 위치에 str이 들어가고 기존 배열은 한칸씩 밀린다.
list.Insert(left, str);
}
foreach (var item in list)
{
WriteLine(item);
}
}
}
Linq를 이용한 간단한 방법
list.Distinct().OrderBy(x => x.Length).ThenBy(x =>x);
중복제거
길이를 기준으로 오름차순
정렬된 값을 기준으로 크기 오름차순 정렬
'기타 > 백준' 카테고리의 다른 글
백준 C# _1676 팩토리얼 0의 개수 (0) | 2024.07.22 |
---|---|
백준 C# 1436 영화감독 숌 (1) | 2024.07.22 |
백준 C# 28702 FizzBuzz (0) | 2024.07.21 |
백준 C# 11050 이항계수 1 (0) | 2024.07.21 |
백준 C# 10989 수 정렬하기 3 (0) | 2024.07.19 |