728x90
입출력 관련 문제, Scanner 말고 Buffer를 이용해보기
첫째줄에 입력되는 값은 사람수 L 과 넓이 P
두번째줄은 각 참가자의 수가 주어진다. 문제에는 5개라고 명시를 해놨네.
그럼 참가자의 수를 a라고 명시를 하고, L*P의 값의 차이를 구하면 되겠군?
왜냐면 상근이가 계산한 참가자의 수(a)와 각 기사에 적혀 있는 참가자의 수의 차이라고 했으니! a - (L x P) 로 보겠다.
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int L = Integer.parseInt(st.nextToken()); //사람수/1m^2
int P = L * Integer.parseInt(st.nextToken()); //파티가 열렸던 곳 넓이 X 사람수/1m^2
StringTokenizer st2 = new StringTokenizer(br.readLine());
while (st2.hasMoreTokens()) {
int a = Integer.parseInt(st2.nextToken());
bw.write(String.valueOf(a-P) + " ");
bw.flush();
}
bw.close();
}
}
StringTokenizer를 이용했고, while문을 통해 hasMoreToken()을 사용했다.
여기서 호기심이 생겨서 while 대신 for문을 한번 이용해보기로 했음.
import java.io.*;
import java.util.StringTokenizer;
public class BJ2845 {
public static void main(String[] args) throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int L = Integer.parseInt(st.nextToken()); //사람수/1m^2
int P = L * Integer.parseInt(st.nextToken()); //파티가 열렸던 곳 넓이 X 사람수/1m^2
StringTokenizer st2 = new StringTokenizer(br.readLine());
for(int i = 0; i<5; i++) {
int a = Integer.parseInt(st2.nextToken());
System.out.print(a - P + " ");
}
bw.close();
}
}
자 그렇다면 hasMoreToken()의 성능이 좋을까? for문의 성능이 좋을까?
hasMoreToken()을 이용했을때
메모리 : 14272KB / 시간 : 124ms
for문을 이용했을때
메모리 : 14592KB / 시간 : 148ms
hasMoreToken()이 메모리가 더 적고, 시간이 더 빨랐다.
Scanner 대신 Buffer를 요즘 자주 쓰고 있는것처럼,
for문 대신 hasMoreToken()을 이용해야하는것일까?
효율적인 메모리와 시간에 대해 고민이 많이지는 시점이다.
728x90
'Algorithm' 카테고리의 다른 글
[Java] 백준 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2021.11.02 |
---|---|
[Java] 백준 2914번 저작권 (0) | 2021.11.01 |
[Java] 백준 2475번 검증수 (0) | 2021.10.30 |
[Java] 백준 2558번 A+B - 2 (0) | 2021.10.30 |
[Java] 백준 2588번: 곱셈 (0) | 2021.10.29 |