import java.util.*;
import java.io.*;
class Main{
public static void main(String[] args) throws IOException{
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] answer = new int[n];
for(int i=0;i<n;i++)
answer[i]=Integer.parseInt(br.readLine());
Arrays.sort(answer);
for(int x : answer)
System.out.println(x);
}
}
오마이갓 시간초과가 나온다.
살펴보니 출력에서 많은 시간을 할애하는 거 같았다.
저 부분을 바꿔보도록 하겠다.
방법 1 Arrays.sort()와 StringBuilder 사용
import java.util.*;
import java.io.*;
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[] answer = new int[n];
for(int i=0;i<n;i++)
answer[i]=Integer.parseInt(br.readLine());
Arrays.sort(answer);
for(int x : answer)
sb.append(x).append('\n');
System.out.println(sb);
}
}
방법 2 Arrays.sort()와 BufferedWriter사용
import java.util.*;
import java.io.*;
class Main{
public static void main(String[] args) throws IOException{
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int[] answer = new int[n];
for(int i=0;i<n;i++)
answer[i]=Integer.parseInt(br.readLine());
Arrays.sort(answer);
for(int x : answer)
bw.write(x+"\n");
bw.flush();
bw.close();
br.close();
}
}
방법3 counting 정렬 이용하기
import java.util.*;
import java.io.*;
class Main{
public static void main(String[] args) throws IOException{
int[] cnt = new int[10001];
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for(int i=0;i<n;i++) {
cnt[Integer.parseInt(br.readLine())]++;
}
br.close();
StringBuilder sb = new StringBuilder();
for(int i=1;i<10001;i++) {
while(cnt[i]>0) {
sb.append(i).append('\n');
cnt[i]--;
}
}
System.out.println(sb);
}
}
비교