본문 바로가기
Algorithm/알고리즘 문제풀이

오늘의 알고리즘(4월 16일)

by devraphy 2021. 4. 16.

1. 백준, 소트인사이드, 1427번

 

www.acmicpc.net/problem/1427

 

1427번: 소트인사이드

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

www.acmicpc.net

 


2. 생각해보자

  • 숫자를 문자열로 입력받는다.
  • 입력받은 문자열을 for문을 사용하여 문자 단위로 나눈다. 
  • 나눠진 문자를 리스트에 넣는다. 
  • 내림차순 정렬 후 재조립하여 문자열로 만든다. 
n = input()
array = list()

for data in n:
    array.append(data)

array.sort(reverse = True) #내림차순 정렬
n = "".join(array)
print(n)

 


3. 해설 및 코드분석 

- 이번 문제의 핵심은 각 자리수를 이용하는 것이다. 

 

 

- sort를 사용하여 풀면 간단하게 해결되지만, 자리수를 이용하여 풀는 방법을 알아보자. 

array = input()

for i in range(9, -1, -1): # 9부터 0까지 증가값은 -1
    for j in array:
        if int(j) == i:
            print(i, end='')

 

 

  • 입력된 문자열을 for문을 통하여 하나씩 확인한다.
  • 내림차순 정렬을 해야하기 때문에 for문을 역순으로 실행시킨다. (0부터 9까지가 아닌, 9부터 0까지)

댓글