본문 바로가기
JAVA

Scanner , BufferedReader 알아보기

by Eungzy 2021. 1. 7.
728x90

지난 4년 동안 JAVA 과제할 때 Scanner sc = new Scanner(System.in); 을 쓰는게 국룰이었는데 .. (그동안 즐거웠어 이제 잘가..)

 

이문제에서 자꾸만 시간 에러가 나는 것이다. 😡 

www.acmicpc.net/problem/2751

 

2751번: 수 정렬하기 2

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

www.acmicpc.net

정렬이 뭐 어렵겠어.. 생각했는데 (?)

다른 정렬 알고리즘을 사용하지 않을 거면 낯선 BufferedReader 이걸 써야 한단다.

왜이리 낯선지 .. 친하게 지내보자 아마 나랑 친하게 지내질걸?


나의 독백(1)

더보기

(구글링 하면서 이 클래스 개념이랑 Scanner 클래스는 시간 초과가 나고 왜 이 클래스는 시간초과가 안 나냐는 건 다 이해했는데

시간이 다소 여유로울 때 그때 설명하겠다....

 

Hoxy 왜 그러는지 궁금해서 들어온 거라면 죄송하지만 다른 블로거... 의 글을 참고하길 바란다. 설명 잘되어있음👍)

나의 독백(2)

더보기

이참에 코딩 스타일을 바꿔보려고 어색하지만, BufferedReader과 StringTokenizer를 적극 활용해보고자 한다.

밑에 이어지는 내용은, 알고리즘 문제를 풀어보면서 익숙해지고자 정리해두려고 한다. 

 


다음은, Gold3 www.acmicpc.net/problem/2437을 푼 것인지- 간단명료해서 기록해 두기로 한다.

 

 

2437번: 저울

하나의 양팔 저울을 이용하여 물건의 무게를 측정하려고 한다. 이 저울의 양 팔의 끝에는 물건이나 추를 올려놓는 접시가 달려 있고, 양팔의 길이는 같다. 또한, 저울의 한쪽에는 저울추들만 놓

www.acmicpc.net

결론부터 말하자면,

  • 흔히 n의 값을 입력을 받을 때는
int n = Integer.parseInt(br.readLine());
  • 띄어쓰기 기준으로 split 하여 array에 담을 경우
String[] input = br.readLine().split(" "); //공백한칸을 기준으로 나눌건데 우선 Line한줄로 입력 (공백으로 나눠주는건 rg?)
int[] temp = new int[n];
for(int i = 0; i < n; i++) {
	temp[i] = Integer.parseInt(input[i]); //int형으로 바꿔서 담아주자 !
}

이거 외에도 StringTokenizer클래스 사용하는 것도 점차 적응되면 추가 정리할 예정이니.. 

<<I  will be back.....>> 

728x90

댓글