C#/C# (백준)

[C#] 백준 알고리즘 1427번, 소트인사이드

서니션 2023. 2. 23. 22:25
728x90
반응형

 

1. Linq 사용

using System;
using System.Linq;

public class Sample
{
    public static void Main()
    {
        // Array.Sort() : 오름차순으로 배열을 정렬
        // 내림차순으로 정렬하는 메서드는 없으므로 Sort() 호출 후 Reverse() 메서드를 사용

        string input = Console.ReadLine();

        // 예외처리
        // if (!int.TryParse(input, out int _))
        // {
        //     Console.WriteLine("Invalid input.");
        //     return;
        // }

        int[] arr = input.Select(c => int.Parse(c.ToString())).ToArray();
        Array.Sort(arr);
        Array.Reverse(arr);

        Console.WriteLine(string.Join("", arr));
    }
}

 

LINQ를 사용하여 문자열(input)을 int 배열(arr)로 변환

Select() 메서드는 입력 컬렉션(input)의 각 요소(c)에 대해 변환 함수(int.Parse(c.ToString()))를 적용한 결과를 새로운 컬렉션으로 반환합니다.

여기서는 input 문자열의 각 문자를 int.Parse()를 사용하여 int로 변환한 후, 새로운 컬렉션으로 반환합니다.

ToArray() 메서드는 새로운 컬렉션을 배열로 변환합니다.

따라서, input 문자열을 int 배열로 변환하여 arr 변수에 저장합니다.

이렇게 한 줄의 코드로 문자열을 int 배열로 변환할 수 있으며, 기존의 for 루프를 사용한 방식에 비해 간결하고 가독성이 좋습니다.

 

string.Join() 메서드는 입력 컬렉션(arr)의 모든 요소를 구분자("")로 이어 붙인 후, 하나의 문자열로 반환합니다. 여기서는 arr 배열의 모든 요소를 이어 붙인 후, 하나의 문자열로 반환합니다.

따라서, (string.Join("", arr))는 arr 배열의 모든 요소를 이어 붙인 후, 하나의 문자열로 반환하는 코드입니다. 

 

2. for 루프 사용

using System;

namespace hshshs
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = Console.ReadLine();
            int[] arr = new int[str.Length];
            string result = "";
            for(int i = 0; i<str.Length; i++)
            {
            	// 문자열 하나씩 잘라서 배열에 저장
                arr[i] = int.Parse(str.Substring(i, 1));       
            }
            Array.Sort(arr);                                          
            Array.Reverse(arr);                                    

            for (int i = 0; i < str.Length; i++)
            {
                result += arr[i].ToString();
            }
            Console.WriteLine(result);
        }
    }
}

 

728x90
반응형