자바는... 느리다.
그런데 생각보다 빠르다.
일반적으로 알고리즘을 풀 때, 자바의 경우는 scanner를 자주 사용한다. 아무래도 여러가지 부가기능이 붙어있으므로 사용하기 편한면 때문에 다들 많이 사용하는 것 같다.
다만, 자바의 경우 입력이 많을 때 , scanner를 써서 시간초과가 날 수 있다. 뿐만 아니라 그때 그때 출력할 경우에도 시간 초과가 날 수 있다.
오늘의 완죤 쉬운 문제 하나를 소개하겠다.
이름하야 수 정렬하기3 https://www.acmicpc.net/problem/10989
솔루션은 간단한데, 직접 정렬을 할 경우 시간초과에 걸리게 된다. N 사이즈가 천만이기 때문에, log조차 붙이는게 조심스럽다.
그런데 보면 최대 값이 10000이다 따라서 카운팅소트를 진행하시면 되겠다.
근데 이문제의 핵심은 이거라기보다...
인풋을 얼마나 빨리 받을 수 있냐에 있다.
자바용 쓸만한 빠른속도로 입력받기 소스를 소개하겠다.
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 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int N = Integer.parseInt(br.readLine()); int[] arr = new int[10010]; for (int i = 0; i< N;i++){ arr[Integer.parseInt(br.readLine())]++; } for(int i =0; i<= 10000; i++){ while(arr[i] != 0){ sb.append(""+i+"\n"); arr[i]--; } } System.out.println(sb.toString()); } } | cs |
'Problem Solving > 기본' 카테고리의 다른 글
Python으로 알고리즘 문제 쉽게 풀기 (1) - input 받기 잡기술 (0) | 2021.04.01 |
---|---|
문제 만들기 TestCaseGenerator와 output 만들기 (0) | 2017.08.06 |
[C++] 연산자 오버로딩 (0) | 2016.11.29 |
C에서 C++로 넘어가기 - 시작 (0) | 2016.11.21 |
알고리즘 사이트 별 장/단점 총정리 (0) | 2016.10.19 |