... | ... | @@ -2598,4 +2598,105 @@ class ExtractStringProgram |
|
|
}
|
|
|
}
|
|
|
```
|
|
|
<br />
|
|
|
|
|
|
4) 아래와 같은 메소드를 구현해주세요.
|
|
|
|
|
|
>
|
|
|
***public static List<string> SortAidList(List<string> unsortedList)***
|
|
|
>
|
|
|
*usage1)
|
|
|
var unsorted = new List<string>();
|
|
|
unsorted.Add("TP6GC.9");
|
|
|
unsorted.Add("TP6GC.4");
|
|
|
unsorted.Add("TP3GC.1");
|
|
|
unsorted.Add("TP3GC.16");
|
|
|
unsorted.Add("TP3GC.10");
|
|
|
unsorted.Add("TP3GC.3");*
|
|
|
|
|
|
>
|
|
|
*var sortedList = SortAidList(unsorted);
|
|
|
// sortedList[0] == "TP3GC.1"
|
|
|
// sortedList[1] == "TP3GC.3"
|
|
|
// sortedList[2] == "TP3GC.10"
|
|
|
// sortedList[3] == "TP3GC.16"
|
|
|
// sortedList[4] == "TP6GC.4"
|
|
|
// sortedList[5] == "TP6GC.9"*
|
|
|
|
|
|
|
|
|
```c#
|
|
|
class SortAidProgram
|
|
|
{
|
|
|
public static List<string> SortAidList(List<string> unsortedList)
|
|
|
{
|
|
|
unsortedList.Sort(); //맨 처음엔 문자열 기준으로 자동 정렬
|
|
|
//unsortedList.ForEach(Console.WriteLine);
|
|
|
|
|
|
int lowPos = 0; //swap을 위한 변수
|
|
|
|
|
|
for (int i = 0; i < unsortedList.Count; i++)
|
|
|
{
|
|
|
lowPos = i;
|
|
|
|
|
|
for (int j = i + 1; j < unsortedList.Count; j++)
|
|
|
{
|
|
|
//'.' 이전의 문자열이 같은 문자열끼리 '.'뒤의 숫자비교
|
|
|
if (ExtractStringProgram.ExtractString(unsortedList[i], "", ".")
|
|
|
.Equals(ExtractStringProgram.ExtractString(unsortedList[j], "", ".")))
|
|
|
{
|
|
|
int numOfi; //i,j,lowPos의 값을 담기 위한 변수
|
|
|
int numOfj;
|
|
|
int numOfLowPos;
|
|
|
|
|
|
//'.'이후에 숫자만 있으면 바로 int로 형변환, 숫자와 문자가 섞여있다면 밑에서 ExtractString 이용해서 숫자만 추출
|
|
|
bool isConvertiblei = int.TryParse(unsortedList[i].Split('.').ElementAt(1), out numOfi);
|
|
|
bool isConvertiblej = int.TryParse(unsortedList[j].Split('.').ElementAt(1), out numOfj);
|
|
|
bool isConvertibleLowPos = int.TryParse(unsortedList[lowPos].Split('.').ElementAt(1), out numOfLowPos);
|
|
|
|
|
|
if (!isConvertiblei) numOfi = int.Parse(ExtractStringProgram.ExtractString(unsortedList[i], ".", "-"));
|
|
|
if (!isConvertiblej) numOfj = int.Parse(ExtractStringProgram.ExtractString(unsortedList[j], ".", "-"));
|
|
|
if (!isConvertibleLowPos) numOfLowPos = int.Parse(ExtractStringProgram.ExtractString(unsortedList[lowPos], ".", "-"));
|
|
|
|
|
|
//Console.WriteLine("numOfi = " + numOfi);
|
|
|
//Console.WriteLine("numOfj = " + numOfj);
|
|
|
//Console.WriteLine("numOfLowPos = " + numOfLowPos);
|
|
|
|
|
|
if (numOfLowPos > numOfj) lowPos = j; //'.' 뒤에 나오는 숫자만 추출해서 비교
|
|
|
//Console.WriteLine("losPos = " + lowPos);
|
|
|
//Console.WriteLine();
|
|
|
}
|
|
|
}
|
|
|
string temp = unsortedList[i]; //swap
|
|
|
unsortedList[i] = unsortedList[lowPos];
|
|
|
unsortedList[lowPos] = temp;
|
|
|
|
|
|
//unsortedList.ForEach(Console.WriteLine);
|
|
|
//Console.WriteLine();
|
|
|
|
|
|
}
|
|
|
return unsortedList;
|
|
|
}
|
|
|
|
|
|
public static void Main()
|
|
|
{
|
|
|
var unsorted = new List<string>();
|
|
|
unsorted.Add("TP6GC.9");
|
|
|
unsorted.Add("TP6GC.4");
|
|
|
unsorted.Add("TP3GC.1");
|
|
|
unsorted.Add("TP3GC.16");
|
|
|
unsorted.Add("TP3GC.10");
|
|
|
unsorted.Add("TP3GC.3");
|
|
|
unsorted.Add("TP3GC.1-C1");
|
|
|
unsorted.Add("TP3GC.1-C2");
|
|
|
unsorted.Add("TP3GC.3-C2");
|
|
|
unsorted.Add("TP3GC.3-C385");
|
|
|
unsorted.Add("TPXGU.5");
|
|
|
unsorted.Add("TPXGU.6");
|
|
|
|
|
|
var sortedList = SortAidList(unsorted);
|
|
|
|
|
|
sortedList.ForEach(Console.WriteLine); //출력
|
|
|
}
|
|
|
}
|
|
|
```
|
|
|
|