elesis's haunt

10818 최소, 최대 본문

백준~문풀 후 최적화 추가~/단계별로 풀어보기

10818 최소, 최대

elesis 2021. 9. 16. 15:37

배열을 사용한 경우

* BufferedReader, StringTokenizer, sysout

* st.hasMoreTokens(), Arrays.sort()

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

public class Main {
	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int index = 0;
		int[] arr = new int[N];
		while(st.hasMoreTokens()) {
			arr[index] = Integer.parseInt(st.nextToken());
			index++;
		}
		
		// 배열에 저장된 원소 값을 오름차순으로 정렬
		Arrays.sort(arr);
		System.out.println(arr[0]+" "+arr[N-1]);
	}
}

 

사용하지 않은 경우 (더빠름)

import java.io.*;
import java.util.StringTokenizer;
 
public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		Integer.parseInt(br.readLine());	//첫 줄 N 은 안쓰이므로 입력만 받는다.
		StringTokenizer st = new StringTokenizer(br.readLine()," ");
		
		int max = -1000001;
		int min = 1000001;
		
		while(st.hasMoreTokens()) {
			int val = Integer.parseInt(st.nextToken());
			if(val>max) {
				max = val;
			}
			if(val<min) {
				min = val;
			}
		}
		System.out.println(min + " " + max);
	}
}

입력 방법에서 Scanner 와 BufferedReader 의 메모리, 시간 차이는 어마어마하다.

배열을 사용하면 최악의 경우 시간복잡도가 O(N^2) 이지만 배열을 사용하지 않고 즉시 비교하는 경우 시간복잡도가 O(N) 이므로 훨씬 시간이 단축된다.

'백준~문풀 후 최적화 추가~ > 단계별로 풀어보기' 카테고리의 다른 글

2577 숫자의 개수  (0) 2021.09.23
2562 최댓값  (0) 2021.09.23
1110 더하기 사이클  (0) 2021.09.16
10951 A+B - 4  (0) 2021.09.14
10952 A+B - 5  (0) 2021.09.13
Comments