정렬 - 수 정렬하기

Seok·2022년 1월 28일
0

알고리즘 정렬

목록 보기
1/1
post-thumbnail

문제풀이

이 문제는 숫자를 오름차순으로 정렬하는 문제이다. JAVA에서 sort 함수로 오름차순으로 정렬해주는 함수가 존재한다. 그 함수를 사용하면 쉽게 풀 수 있다. 하지만 시간제한 5초에 메모리 제한 8MB로 제한 되어있기 때문에 입력, 출력 부분만 잘 해결하면 쉽게 풀 수 있다.

  1. Scanner로 입력을 받게 되면 내부적으로 자체 정규식 검사 과정에서 시간이 엄청 소요되기 때문에 '시간 초과'가 발생할 수 밖에 없다. 그렇기 때문에 BufferedReader 를 사용해야 한다.
  2. 또한 출력도 BufferedWriter 또는 StringBuilder 를 이용하여 출력해야한다.
  3. 필자는 BufferedReader와 StringBuilder를 사용하여 문제를 풀었다.

소스 코드

package sort;

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

public class number_sort2 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		//Scanner in = new Scanner(System.in);
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		int N = Integer.parseInt(br.readLine());
		
		int[] nums = new int[N];
		
		for(int i = 0; i<N; i++) {
			nums[i] = Integer.parseInt(br.readLine());
		}
		Arrays.sort(nums);
		for(int i=0; i<N; i++) {
			sb.append(nums[i]).append("\n");
		}
		System.out.println(sb);
	}

}

정리

  • 백준 문제에서는 시간복잡도와 메모리 제한을 두어 코드를 구현했을 때 답은 나와도 시간초과나 메모리 초과로 문제가 틀리는 경우가 있다. 이러한 경우처럼 시간제한과 메모리제한을 두었을 때 만족할 수 있는 방법들에 대해 배우고 대처할 수 있게 되었다.
profile
네이티브 앱개발에 관심많은 주니어 개발자

0개의 댓글