티스토리 뷰

 

문제는 위와 같으며 기본적으로 제공되는 sort() 를 역순으로 정렬하도록 사용하여 문제를 해결하였습니다.

 

파이썬 코드는 다음과 같습니다.

from sys import stdin

nums = list(map(int, stdin.readline().strip()))
nums.sort(reverse=True)
print("".join(str(i) for i in nums))

 

자바 코드는 다음과 같습니다. 자바의 경우 reverse 배열을 만들 때 형변환 등 다소 복잡한 로직이 있어 우선 sort 하고 반대로 출력하는 방식을 사용하였습니다.

import java.io.*;
import java.util.Arrays;

class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        String[] inputs = br.readLine().split("");
        int[] nums = new int[inputs.length];
        for (int i = 0; i < inputs.length; i++) {
            nums[i] = Integer.parseInt(inputs[i]);
        }

        Arrays.sort(nums);
        for (int i = (nums.length - 1); i >= 0; i--) {
            System.out.print(nums[i]);
        }
    }
}

 

또 다른 해결 방법으로는 0~9 까지 수를 거꾸로 돌면서 주어진 숫자에 포함이 되어있는지 확인하여 출력하는 방식이 있습니다.

 

파이썬 코드는 다음과 같습니다.

from sys import stdin

nums = list(map(int, stdin.readline().strip()))

for i in range(9, -1, -1):
    for n in nums:
        if n == i:
            print(i, end="")

 

자바 코드는 다음과 같습니다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

public class BJAlgo_1427 {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int[] nums = Arrays.stream(br.readLine().split("")).mapToInt(Integer::parseInt).toArray();

        for (int i = 9; i >= 0; i--) {
            for (int n : nums) {
                if (i == n) {
                    System.out.print(i);
                }
            }
        }
    }
}

 

이 문제의 경우 숫자보다 자리수에 초점을 맞춰 생각하고 문제에 접근하는 것이 더 쉬운 것 같습니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함