본문 바로가기
백준

[백준] 단계별로 풀어보기(단계:12,정렬,JAVA)1427번, 소트인사이드

by 열정적인 이찬형 2022. 1. 13.

문제 링크

1427번: 소트인사이드
 
www.acmicpc.net

주의사항

  • JAVA를 사용하여 프로그램을 사용하였습니다.
  • 백준에서 코드를 작성하였을 때 아래 형태에서 Main에서 결과가 출력되어야 합니다.
public class Main{ 	
	public static void main(String[] args){
    }
}

문제 설명


접근 방법

문제에 내용에서 배열에 정렬에 대한 내용이 나왔으므로 배열에 대한 정렬을 할 수 있는 명령어 Arrays.sort를 사용하였습니다.

하지만 다른 조건인 오름차순이 아닌 내림차순으로 되어있기 때문에 Collections.reverseOrder()를 사용하여야 합니다.

여기서 int형태로 배열을 만들어놓고 진행한다면 컴파일 오류가 발생할 수 있습니다. Collections는 객체를 대상으로 하는데 int형은 객체가 아닌 primitive type이어서 int대신 Integer로 선언하여 배열을 만들어 진행하였습니다.

  • 통계학 지표들을 알 수 있는 함수 arrsort를 만들었습니다.
  • BufferedReader를 사용하여 입력 값을 받았습니다.
  • 배열정렬을 위하여 배열을 초기화 한 뒤 for문을 통해 배열에 값을 저장하였습니다.
  • Arrays.sort(arr,Collections.reverseOrder())를 이용하여 내림차순으로 정렬하였습니다.
  • for문을 통해 배열에 값을 bw에 저장하였습니다.
  • BufferedWriter를 통해 저장된 결과를 출력하였습니다.

결과 코드

import java.io.*;
import java.util.*;
public class Main{
	public static void main(String[] args) throws IOException{
		arrsort();
	}
	public static void arrsort() throws IOException{
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        //BufferedReader를 통해 입력 값 받기
    	BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
       	//BufferedWriter를 통해 결과 출력
    	String num = br.readLine();	//입력값 받기
    	Integer[] arr = new Integer[num.length()];	//배열 초기화
    	for(int i=0;i<num.length();i++) 
    		arr[i] = Character.getNumericValue(num.charAt(i));	//배열 값 저장
    	Arrays.sort(arr, Collections.reverseOrder());	//배열 내림차순 정렬
    	for(int i=0;i<num.length();i++)
    		bw.write(String.valueOf(arr[i]));	//bw에 저장
    	bw.flush();		//결과 출력
    	bw.close();
    	br.close();
    	
	}
}

댓글