출처: 프로그래머스 코딩 테스트 연습
https://school.programmers.co.kr/learn/courses/30/lessons/42746
나의 풀이
using System;
using System.Linq;
using System.Text;
public class Solution {
public string solution(int[] numbers)
{
var enumer = numbers.Select(s => s.ToString())
.OrderByDescending(o => $"{o}{o}{o}");
bool isZero = true;
var sb = new StringBuilder();
foreach(string str in enumer)
{
if(isZero && str == "0")
continue;
isZero = false;
sb.Append(str);
}
return isZero ? "0" : sb.ToString();
}
}
문자열을 반복해서 비교했다.
string은 정렬하면 사전순으로 정렬되기 때문에 그냥 바로 string으로 비교함.
다른사람풀이
using System;
using System.Linq;
using System.Text;
public class Solution {
public string solution(int[] numbers) {
StringBuilder sb = new StringBuilder();
string[] stringNumbers = new string[numbers.Length];
for (int i = 0; i < stringNumbers.Length; i++)
stringNumbers[i] = numbers[i].ToString();
Array.Sort(stringNumbers, (x, y) => string.Compare(y + x, x + y));
for (int i = 0; i < stringNumbers.Length; i++)
sb.Append(stringNumbers[i]);
var stringAns = sb.ToString();
return stringAns.ToCharArray()[0] == '0' ? "0" : stringAns;
}
}
정렬은 x + y / y + x 로 가상으로 붙여서 비교를 했다. 이게 정석인듯.
0비교는 일단 string으로 만든다음 0의 갯수를 세서 길이와 같으면 0으로 처리함.
'🛡️ 코딩테스트 > 🛡️ 코테 : 프로그래머스' 카테고리의 다른 글
C# 숫자 변환하기 - BFS / 프로그래머스 [Lv.2] (0) | 2023.03.16 |
---|---|
C# 소수 찾기 - DFS 순열 / 프로그래머스 [Lv.2] (0) | 2023.03.10 |
C# 게임 맵 최단거리 - BFS 길찾기 / 프로그래머스 [Lv.2] (0) | 2023.03.04 |
C# 모음사전 - DFS 중복순열 / 프로그래머스 [Lv.2] (0) | 2023.03.03 |
C# 신고 결과 받기 - 프로그래머스 [Lv.1] (0) | 2023.01.27 |