[프로그래머스] 가장 큰 수

박지예·2023년 10월 30일
0

코딩테스트

목록 보기
10/17

문제

생각

처음에는 깃수 정렬 처럼 요소들의 자릿수를 하나하나씩 Queue에 저장하여 큰 수 순서대로 정렬하려 하였다.

그러나 이 로직에는 크나큰 문제가 있었다.
3과 30이 있으면 330이랑 303이 나온다. 그러니 3, 30 순으로 정렬해야 한다.

과정

그래서 모두 문자열로 합치고 그 아스키코드의 크기를 비교하여 정렬하기로 했다.

코드

    public string solution(int[] numbers)
    {
        List<string> list = new List<string>();

        int zeroCnt = 0;		// 모두 0일때의 예외처리

        for (int i = 0; i < numbers.Length; i++)
        {
            if (numbers[i] == 0) zeroCnt++;

            list.Add(numbers[i].ToString());
        }

        if (zeroCnt == numbers.Length) return "0";

        StringBuilder stringBuilder = new StringBuilder();
        list.Sort((x, y) => (y + x).CompareTo(x + y));		// 람다식 


        for (int i = 0; i < numbers.Length; i++)
        {
            stringBuilder.Append(list[i]);
        }

        return stringBuilder.ToString();
    }
profile
언젠간 바다로 갈거야!🐋

0개의 댓글