avatar
Brocolling's Blog
코딩테스트 준비 - 소트인사이드
혼자서 다시푸는 코딩테스트 준비 일지 - 24
문자열정렬
Sep 20
·
3 min read

다시푸는 코딩 테스트 준비 일지

  • 응시 사이트 : BOJ

  • 문제 : 1427.소트인사이트

  • 사용언어 : C#

  • 난이도 : 하

  • 풀이시간 : 10m

  • 유형 : 문자열, 정렬

문제

배열을 정렬하는 것은 쉽다. 수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자.

입력

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.

예제 입력 1

2143

예제 출력 1

4321

예제 입력 2

999998999

예제 출력 2

999999998

예제 입력 3 복사

61423

예제 출력 3 복사

64321

예제 입력 4 복사

500613009

예제 출력 4 복사

965310000

문제 풀이 접근

이 문제의 요구사항은 단순 내림차순 정렬하여 출력이 끝이다.
두가지 방법으로 풀어봤는데, 원리는 똑같은데 스텝을 넣느냐 안넣느냐 차이다.

0번, 1번은 동일한데, 0번은 최대한 숏코딩, 1번은 일반적으로 풀이한 것이다.

방법론은 아래와같다.

  1. 내림차순 조건자를 애초에 넣어서 정렬 기준을 잡아준다.

  2. 오름차순으로 정렬한 후 reverse 한다.

되도록 조건자를 잡는방법을 안다면 1번이 한번에 정렬되어서 더 효율이 빠르다.
2번은 정렬하고 뒤집는 연산도 들어가기 때문에 비교적 느리다.

정답 작성 코드 (C#)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Security.AccessControl;
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using System.Xml.Linq;
using static CodingTestProj.Program;

/*
 * Difficulty : Easy
 * URL : https://www.acmicpc.net/submit/1427
 */


namespace CodingTestProj
{
    internal class Program
    {
        static void Main(string[] args)
        {
            //Case 0 _ Short
            char[] convertC = Console.ReadLine().ToCharArray();
            Array.Sort(convertC, (x, y) => { return y.CompareTo(x); });
            Console.WriteLine(convertC);

            //Case 1
            //string input = Console.ReadLine();
            //char[] convertC = input.ToCharArray();
            //Array.Sort(convertC,(x,y) => { return y.CompareTo(x); });
            //Console.WriteLine(convertC);

            //Case2
            //string input = Console.ReadLine();
            //char[] convertC = input.ToCharArray();
            //var revertC = convertC.Reverse();
            //foreach(var element in revertC)
            //{
            //    Console.Write(element);
            //}
        }
    }
}

코드 결과

until-1409


- 컬렉션 아티클







Dotorings,