ONLINE JUDGE/제어문

[백준15552] 빠른A+B

W_W_Woody 2022. 2. 2. 23:27

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

 

15552번: 빠른 A+B

첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.

www.acmicpc.net


BufferedReader 을 써줬어도 System.out.println() 을 각 테스트 케이스마다 해주면 시간초과가 되어버린다.

  1.  StringBuilder 로 하나의 문자열로 계속 연결시킨 뒤 가장 마지막에 연결된 하나의 문자열을 출력시키는 방법.
  2.  BufferedWriter 로 버퍼에 담아둬았다가 한 번에 데이터를 보내는 방법

🧩선 개념

bufferedWriter

[Java] 💻BufferdReader/Writer


방법1. BufferedWriter 이용하기

package step3;

import java.io.IOException;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Day10_15552_2 {
	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());
//		StringBuffer sb = new StringBuffer();

		StringTokenizer st;

		for (int a = 0; a < N; a++) {
			st = new StringTokenizer(br.readLine(), " ");
			bw.write(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken()) + "\n");
//			bw.write("\n");
		}
		br.close();

		bw.flush();
		bw.close();

//		System.out.println(sb);
	}
}

필수적으로 버퍼를 비운 뒤(flush) 닫아줘야한다(close).

 

방법2. StringBuffer/Builder 이용하기

package step3;

import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Day10_15552_2 {
	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());
        
		StringBuffer sb = new StringBuffer();
		StringTokenizer st;

		for (int a = 0; a < N; a++) {
			st = new StringTokenizer(br.readLine(), " ");
            sb.append(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken())).append('\n');

		}
		br.close();



		System.out.println(sb);
	}
}

방법3. String.substring() 이용하기 StringTokenizer

package step3;

import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Day10_15552_3 { //subString
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		StringBuffer sb = new StringBuffer();

//		StringTokenizer st;

		for (int a = 0; a < N; a++) {
			String str = br.readLine();
			int target = str.indexOf(" ");
			int result = Integer.parseInt(str.substring(0,target)) + Integer.parseInt(str.substring(target + 1));
			sb.append(result+"\n");
		}
		br.close();

		System.out.print(sb);

	}

}

[Java] 💻String의 생성자와 메서드

 

  • 스레드 : 하나의 프로세스를 안에서 다양한 작업을 담당하는 최소 실행 단위
    ex) 크롬 브라우저(=프로세스)에서 벨로그 작성하기(=스레드1) & 유튜브로 음악 듣기(=스레드2)

 

 

 

Thread

 

https://velog.io/@gil0127/%EC%8B%B1%EA%B8%80%EC%8A%A4%EB%A0%88%EB%93%9CSingle-thread-vs-%EB%A9%80%ED%8B%B0%EC%8A%A4%EB%A0%88%EB%93%9C-Multi-thread-t5gv4udj

 

싱글스레드(Single thread) vs 멀티스레드 (Multi thread)

오늘은 싱글 스레드와 멀티 스레드가 무엇인가와 이 둘의 장단점에 대해서 알아보자!!일단, 시작에 앞서 이해를 돕기 위해 이 그림을 봐주길 바란다.=> 싱글 스레드와 멀티 스레드의 차이는 이

velog.io