백준, 정렬) 수 정렬하기
수 정렬하기
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

해당 문제는 list배열을 사용하고 Collections.sort의 정렬을 사용한다.
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
List<Integer> y = new ArrayList<>();
int n;
int x;
n = sc.nextInt();
for(int i= 0; i < n; i++){
x = sc.nextInt();
y.add(x);
}
Collections.sort(y);
for(int i =0; i < n; i++){
int w = y.get(i);
System.out.println(w);
}
}
}
매서드 찾는 시간 말고는 짧은 시간안에 끝난 문제 였다.
수 정렬하기2
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

해당 문제는 오름차순으로 정렬하는 것이다.
그저 정렬하는거라 어쩌피 출력값은 같으니깐 같은걸 쓰면되겠지?
했지만 시간 초과가 나와 다른 매서드를 알아 보았다
알아본 결과
System.out.println();
Scanner sc = new Scanner(System.in);
의 입출력 속도가 느리다는 걸 확인
해당 클래스들을 바꿔주기로 했다,
BufferedReader, BufferedWriter
해당 클래스는
java의 입출력 속도를 향상시키기 위해 사용 되는 클래스들이다.
BufferedReader
스트림에서 문자를 효울적으로 읽게해준다.
주요 메서드
BufferedReader(Reader in): 지정된Reader객체로부터 버퍼링된 입력 스트림을 생성합니다.String readLine(): 입력 스트림에서 한 줄을 읽습니다. 더 이상 읽을 줄이 없으면null을 반환합니다.void close(): 스트림을 닫고 관련된 모든 시스템 리소스를 해제합니다.
BufferedWriter
스트림에서 문자를 효율적으로 출력해준다.
주요 메서드
BufferedWriter(Writer out): 지정된Writer객체로부터 버퍼링된 출력 스트림을 생성합니다.void write(String s): 지정된 문자열을 출력 스트림에 씁니다.void newLine(): 플랫폼의 줄 구분자 문자열을 씁니다.void flush(): 버퍼에 있는 모든 문자를 출력 스트림에 씁니다.void close(): 스트림을 닫고 관련된 모든 시스템 리소스를 해제합니다.
주의
꼭 버퍼같은 자원을 사용하는 클래스의 경우는 명시적으로 닫아주어야한다
그 이유는
자원 : 컴퓨터 성능
데이터 손실 : 남아 있을경우 데이터가 제대로 저장이 안될수가 있음.
파일 시스템 무결성 유지 : 제대로 닫아주지 않으면 시스템에 무결성이 손상될 수가 있음. EX) 다른 프로세서 파일 접근 안될수가 있음, 파일 손상 우려
바꾼 코드들
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
우선 작성하기 편하게 변수명을 br과 bw로 줬다.
전체 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public 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());
List<Integer> y = new ArrayList<>();
for(int i = 0; i < n; i++) {
int x = Integer.parseInt(br.readLine());
y.add(x);
}
Collections.sort(y);
for(int i = 0; i < n; i++) {
bw.write(y.get(i) + "\n");
}
bw.flush();
bw.close();
br.close();
}
}
결국 정답이 맞았다.
댓글남기기