글 작성자: 취업중인 피터팬
728x90

https://www.acmicpc.net/problem/2845

 

2845번: 파티가 끝나고 난 뒤

파티가 끝나고 나면, 사람들은 누가 파티에 왔는지와 얼마나 많은 사람들이 왔는지를 궁금해한다. 보통 파티는 매우 크게 열리기 때문에, 정확하게 몇 명이 참가했는지 알 수가 없다. 지난주 토

www.acmicpc.net

 

정답

import java.util.*;
import java.io.*;

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer sang = new StringTokenizer(br.readLine());
		StringTokenizer newsPaper = new StringTokenizer(br.readLine());
		
		int sang_num = Integer.parseInt(sang.nextToken()) * Integer.parseInt(sang.nextToken());
		
		System.out.printf("%d %d %d %d %d",Integer.parseInt(newsPaper.nextToken()) - sang_num,Integer.parseInt(newsPaper.nextToken()) - sang_num,Integer.parseInt(newsPaper.nextToken()) - sang_num,Integer.parseInt(newsPaper.nextToken()) - sang_num,Integer.parseInt(newsPaper.nextToken()) - sang_num);
		
	}
}

한줄과 공백으로 구별하여 입력받기 때문에 StringTokenizer로 입력 받았고 속도 개선을 위해 BufferedReader를 사용하였습니다.

 

BufferedReader같은 경우는 우리가 흔이 쓴는 Scanner과 같은 형식입니다. 다만 자바에서 입출력을 buffer로 인식해 속도가 굉장히 빨라지는 장점이 있습니다.(요즘은 다 웹으로 사용해서 크게 쓰이는 곳이 많지는 않습니다.)

StringTokenizer은 기본 구분자 공백, 줄바꿈, 탭 등과 같은 글자를 자동으로 구분해 주는 역할을 합니다.

hasMoreTokens() 함수로 구분자의 다음 글자가 있는지 확인 할 수 있고(있으면 true 없으면 false가 반환됩니다.) nextToken()함수로 구분자의 다음 글자를 가져올 수 있습니다.