[BaekJoon] 10952๋ฒˆ - A+B - 5 (java)

1. ๋ฌธ์ œ

๐Ÿ‘‰ ๋ฌธ์ œ ๋ฐ”๋กœ๊ฐ€๊ธฐ

- ์กฐ๊ฑด

์‹œ๊ฐ„ ์ œํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ
1์ดˆ 256MB


- ๋ฌธ์ œ

๋‘ ์ •์ˆ˜ A์™€ B๋ฅผ ์ž…๋ ฅ๋ฐ›์€ ๋‹ค์Œ, A+B๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.



- ์ž…๋ ฅ

์ž…๋ ฅ์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ํ•œ ์ค„๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๊ฐ ์ค„์— A์™€ B๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 < A, B < 10)
์ž…๋ ฅ์˜ ๋งˆ์ง€๋ง‰์—๋Š” 0 ๋‘ ๊ฐœ๊ฐ€ ๋“ค์–ด์˜จ๋‹ค.



- ์ถœ๋ ฅ

๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งˆ๋‹ค A+B๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

- ์˜ˆ์ œ

ย ย ์ž…๋ ฅย ย  ย ย  ์ถœ๋ ฅย ย 
1 1
2 3
3 4
9 8
5 2
0 0
2
5
7
17
7





2. ํ’€์ด

๋ฐ˜๋ณต๋ฌธ while๋ฅผ ์‚ฌ์šฉํ•ด 0 0 ์ž…๋ ฅ์ „๊นŒ์ง€ A + B๋ฅผ ๋ฐ˜๋ณตํ•œ๋‹ค.

while (์กฐ๊ฑด๋ฌธ) {
    ์กฐ๊ฑด๋ฌธ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์ฐธ์ธ ๋™์•ˆ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ํ•˜๊ณ ์ž ํ•˜๋Š” ๋ช…๋ น๋ฌธ ์ž‘์„ฑ;
}




2๊ฐœ์˜ ์ž…๋ ฅ๋ฐฉ์‹๊ณผ 2๊ฐœ์˜ ์ถœ๋ ฅ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์„œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

  1. Scanner ํด๋ž˜์Šค (์ž…๋ ฅ)
  2. BufferedReader ํด๋ž˜์Šค (์ž…๋ ฅ)
    ย ย โ‘  StringBuilder (์ถœ๋ ฅ)
    ย ย โ‘ก BufferedWriter (์ถœ๋ ฅ)



- 1. Scanner ํด๋ž˜์Šค

import java.util.Scanner;
 
public class Main {
	public static void main(String args[]) {
		Scanner sc = new Scanner(System.in);
		
		while(true) {
			int a = sc.nextInt();
			int b = sc.nextInt();
			
			if(a==0 && b==0){
				sc.close();
				break;
			}
			System.out.println(a + b);
		}
	}
}

์œ„์™€๊ฐ™์ด ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, Scanner(System.in) ์—์„œ System.in ์€ ์ž…๋ ฅํ•œ ๊ฐ’์„ Byte ๋‹จ์œ„๋กœ ์ฝ๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค.

intํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›๊ธฐ ์œ„ํ•ด nextInt() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

while(true) ๋กœ ๋ฌดํ•œ ๋ฐ˜๋ณต ํ•˜๋ฉด์„œ ๋งŒ์•ฝ a์™€ b๊ฐ€ ๋‘˜ ๋‹ค 0 ์ผ๊ฒฝ์šฐ break; ๋ฅผ ํ†ตํ•ด ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•ด์ฃผ๊ณ , ์•„๋‹๊ฒฝ์šฐ ์ž…๋ ฅ๋ฐ›์€ a์™€ b๋ฅผ ๋”ํ•œ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.



[์—ฌ๊ธฐ์„œ ์ž ๊น!]

Scanner์— ๋Œ€ํ•ด ๋” ์ž์„ธํžˆ ์•Œ๊ณ ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ ๋ฅผ ํด๋ฆญํ•˜์„ธ์š”




- 2. BufferedReader ํด๋ž˜์Šค ์‚ฌ์šฉ

2๊ฐ€์ง€ ์ถœ๋ ฅ ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๊ณ  ๋น„๊ตํ•ด๋ณด์ž.



ย ย ย ย  โ‘  StringBuilder
ย ย ย ย  โ‘ก BufferedWriter



โ‘  BufferedReader + StringBuilder

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
 
public class Main {
 
	public static void main(String[] args) throws IOException {
 
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();
		
		while(true) {
			
			st = new StringTokenizer(br.readLine()," ");
			int a = Integer.parseInt(st.nextToken());
			int b = Integer.parseInt(st.nextToken());
			
			if(a==0 && b==0) {
				break;
			}
			sb.append((a+b)).append("\n");
		}
		System.out.println(sb);
	}
}

readLine()์€ ํ•œ ์ค„์„ ํ†ต์งธ๋กœ ์ฝ์–ด String์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— StringTokenizer ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด โ€œ โ€œ(๊ณต๋ฐฑ)์„ ๊ธฐ์ค€์œผ๋กœ ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๊ณ , nextToken()๋ฅผ ์‚ฌ์šฉํ•ด ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ์ž…๋ ฅ๊ฐ’๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ€์ ธ์˜จ๋‹ค.

Integer.parseInt()์„ ์‚ฌ์šฉํ•ด Stringํ˜•์„ intํ˜•์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ์ค€๋‹ค.

StringBuilder ํด๋ž˜์Šค๋Š” ๋ฌธ์ž์—ด์„ ๋™์ ์œผ๋กœ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ํด๋ž˜์Šค๋กœ, append() ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฌธ์ž์—ด์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.

append() ๋ฅผ ์œ„์™€ ๊ฐ™์ด ๋‚˜๋ˆ ์„œ ์“ฐ๋ฉด ํƒ€์ž… ๋ณ€ํ™˜๊ณผ ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ด ์ถ”๊ฐ€์ ์œผ๋กœ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  StringBuilder์— ์ง์ ‘ ์ถ”๊ฐ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ณด๋‹ค ๋” ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅด๋‹ค.





โ‘ก BufferedReader + BufferedWriter

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
 
public class Main {
 
	public static void main(String[] args) throws IOException {
 
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();
		
		while(true) {
			
			st = new StringTokenizer(br.readLine()," ");
			int a = Integer.parseInt(st.nextToken());
			int b = Integer.parseInt(st.nextToken());
			
			if(a==0 && b==0) {
				break;
			}
			sb.append((a+b)).append('\n');
		}
		System.out.println(sb);
	}
}

BufferedWriter ํด๋ž˜์Šค์˜ write() ๋ฉ”์†Œ๋“œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๋ถ€ ๋ฒ„ํผ์— ์ €์žฅํ•˜๊ณ , flush() ๋ฉ”์†Œ๋“œ ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฒ„ํผ๋ฅผ ๋น„์šฐ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

BufferedWriter ํด๋ž˜์Šค์˜ write() ๋ฉ”์†Œ๋“œ๋Š” ๋‹จ๋…์œผ๋กœ int ํ˜• ๊ฐ’๋งŒ ๋„ฃ์„ ๊ฒฝ์šฐ ์•„์Šคํ‚ค ์ฝ”๋“œ๊ฐ’์œผ๋กœ ์ธ์‹๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ๋ฌธ์ž๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค. ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ๋ฌธ์ž์—ด๊ณผ int ํ˜•์„ ํ•จ๊ป˜ ๋„ฃ์–ด์ค˜์•ผ int ๊ฐ’์„ ์ œ๋Œ€๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.



[์—ฌ๊ธฐ์„œ ์ž ๊น!]

BufferedWriter ํด๋ž˜์Šค์— ๋Œ€ํ•ด ๋” ์•Œ์•„๋ณด๊ณ  ์‹ถ์œผ๋ฉด ์—ฌ๊ธฐ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋œ๋‹ค.





3. ์„ฑ๋Šฅ ๋น„๊ต

image

์œ„์—์„œ ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ

BufferedReader + StringBuilder
BufferedReader + BufferedWriter
Scanner

์œ„์™€๊ฐ™์ด ์ž…๋ ฅ ๋ฉ”์†Œ๋“œ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์‹œ๊ฐ„์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค.

์ž…๋ ฅ์˜ ๊ฒฝ์šฐ ํ™•์‹คํžˆ Scanner ๋ณด๋‹ค๋Š” BufferedReader ๊ฐ€ ๋น ๋ฅธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์ถœ๋ ฅ์˜ ๊ฒฝ์šฐ BufferedWriter ๋ณด๋‹ค๋Š” StringBuilder ๊ฐ€ ๋น ๋ฅธ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
(๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ ์–‘์ด ์ปค์ง€๋ฉด ์ปค์งˆ ์ˆ˜๋ก BufferedWriter ๊ฐ€ ๋” ๋น ๋ฅด๋‹ค.)

BufferedWriter๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ I/O ์ž‘์—…์œผ๋กœ ์ธํ•ด ๋น„๊ต์  ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค.
๋ฐ˜๋ฉด์— StringBuilder๋Š” ๋ฌธ์ž์—ด ์กฐ์ž‘์— ์ตœ์ ํ™”๋œ ํด๋ž˜์Šค๋กœ, ๋ฌธ์ž์—ด ์—ฐ์‚ฐ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์—์„œ ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ ์ƒ๋Œ€์ ์œผ๋กœ ๋น ๋ฅผ ์ˆ˜ ์žˆ๋‹ค.





๊ด€๋ จ ํŽ˜์ด์ง€

Categories:

Updated:

Leave a comment