`Scanner`์ `System.out.println` ๋์ ๋น ๋ฅด๊ฒ ์ ๋ ฅ/์ถ๋ ฅ์ ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด๊ฒ ๋ ๋ฌธ์ ์ ๋๋ค.
์ฝ๋ฉํ ์คํธ์์ ์๋๊ฐ ๋น ๋ฅธ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ ๋ ์ ๋ฆฌํ BufferReader/Writer ํด๋์ค์ ๋ํด ์์๋ด ์๋ค.
๐ ๋ฐฑ์ค 15552๋ฒ
๋ณธ๊ฒฉ์ ์ผ๋ก for๋ฌธ ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ ์ ์ฃผ์ํด์ผ ํ ์ ์ด ์๋ค. ์
์ถ๋ ฅ ๋ฐฉ์์ด ๋๋ฆฌ๋ฉด ์ฌ๋ฌ ์ค์ ์
๋ ฅ๋ฐ๊ฑฐ๋ ์ถ๋ ฅํ ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋ ์ ์๋ค๋ ์ ์ด๋ค.
C++์ ์ฌ์ฉํ๊ณ ์๊ณ cin/cout์ ์ฌ์ฉํ๊ณ ์ ํ๋ค๋ฉด, cin.tie(NULL)๊ณผ sync_with_stdio(false)๋ฅผ ๋ ๋ค ์ ์ฉํด ์ฃผ๊ณ , endl ๋์ ๊ฐํ๋ฌธ์(\n)๋ฅผ ์ฐ์. ๋จ, ์ด๋ ๊ฒ ํ๋ฉด ๋ ์ด์ scanf/printf/puts/getchar/putchar ๋ฑ C์ ์
์ถ๋ ฅ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ์ ๋๋ค.
Java๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด, Scanner์ System.out.println ๋์ BufferedReader์ BufferedWriter๋ฅผ ์ฌ์ฉํ ์ ์๋ค. BufferedWriter.flush๋ ๋งจ ๋ง์ง๋ง์ ํ ๋ฒ๋ง ํ๋ฉด ๋๋ค.
Python์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด, input ๋์ sys.stdin.readline์ ์ฌ์ฉํ ์ ์๋ค. ๋จ, ์ด๋๋ ๋งจ ๋์ ๊ฐํ๋ฌธ์๊น์ง ๊ฐ์ด ์
๋ ฅ๋ฐ๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด์ ์ ์ฅํ๊ณ ์ถ์ ๊ฒฝ์ฐ .rstrip()์ ์ถ๊ฐ๋ก ํด ์ฃผ๋ ๊ฒ์ด ์ข๋ค.
๋ํ ์
๋ ฅ๊ณผ ์ถ๋ ฅ ์คํธ๋ฆผ์ ๋ณ๊ฐ์ด๋ฏ๋ก, ํ
์คํธ์ผ์ด์ค๋ฅผ ์ ๋ถ ์
๋ ฅ๋ฐ์์ ์ ์ฅํ ๋ค ์ ๋ถ ์ถ๋ ฅํ ํ์๋ ์๋ค. ํ
์คํธ์ผ์ด์ค๋ฅผ ํ๋ ๋ฐ์ ๋ค ํ๋ ์ถ๋ ฅํด๋ ๋๋ค.
Buffer
Java์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ์๋ฅผ ์ ๋ ฅ๋ฐ๊ณ ์ถ๋ ฅ ๋ ๋ค์๊ณผ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ฑํ์ ๊ฒ๋๋ค.
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();
System.out.println(num);
๋ฒํผ๋ฅผ ์ด์ฉํ๋ฉด ์๋ฐ์์ `System.in`๊ณผ `System.out.print`๋ณด๋ค ๋์ฑ ๋น ๋ฅด๊ฒ ์ ๋ ฅ์ ๋ฐ๊ฑฐ๋, ์ถ๋ ฅ์ ํ ์ ์์ต๋๋ค.
๋ฒํผ๋ ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ ์ฅํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ผ๋ก
๋ฐ์ดํฐ ์ ์ถ๋ ฅ ์์ ์ ์ฌ๋ฌ ๋ฒ ์์ฒญํ๋ ๋์ ํ ๋ฒ์ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ ๋๋ค.
์๋ฅผ ๋ค์ด,
ํธ์์ ์์ ์๋์ด ์ด ๋ฌผ๊ฑด์ ํ๋์ฉ ์นด์ดํฐ์ ์ฌ๋ ค์ ๊ณ์ฐํ๋ฉด ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋๋ฐ
๋ฐ๊ตฌ๋์ ๋ฌผ๊ฑด์ ๋ชจ์์ ํ ๋ฒ์ ๊ณ์ฐํ๋ฉด ๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ๋ฐ๊ตฌ๋๊ฐ ๋ฒํผ ์ญํ ์ ๋๋ค.
๋ฐ์ดํฐ๋ฅผ ํ ๋ฒ์ ์กฐ๊ธ์ฉ ์ฒ๋ฆฌํ๋ ๋์ , ์ผ๋จ ๋ฒํผ์ ๋ด์๋์๋ค๊ฐ ํ ๋ฒ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ๋๋ค.
BuffereredReader
`Scanner`๋ ์ ๋ ฅ์ ๋ฐ์ ๋ ์ซ์ ํ๋, ๋ฌธ์์ด ํ๋ ์ด๋ ๊ฒ ์ฝ์ ๋๋ง๋ค ์์คํ ์ ํธ์ถํฉ๋๋ค.
`BufferedReader`๋ ์ ๋ ฅ์ ํ ์ค ํต์งธ๋ก ์ฝ์ด ๋ฒํผ์ ์ ์ฅํ ํ ์ํ๋ ๋งํผ ์๋ผ์ ์ฐ๋ ๋ฐฉ์์ ๋๋ค.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine(); // ํ ์ค ํต์งธ๋ก ์ฝ์
int n = Integer.parseInt(s);
BufferedWriter
`System.out.println`์ ์ถ๋ ฅํ ๋๋ง๋ค ์์คํ ์ ์ถ๋ ฅํ๊ฒ ๋ค๊ณ ์์ฒญ์ ๋ณด๋ ๋๋ค.
`BufferedWriter`์ ์ถ๋ ฅํ ๋ด์ฉ์ ๋ฒํผ์ ์์๋์๋ค๊ฐ `flush()`๋ close()`๋ผ๋ ํน์ ํ ๋ช ๋ น์ผ๋ก ํ ๋ฒ์ ์ถ๋ ฅํฉ๋๋ค.
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("Hello ");
bw.write("My name is ");
bw.write("Soyoung");
bw.flush();
์ ์ถ๋ ฅ ํ์๊ฐ ๋ง์ ๋๋ `Scanner`๋ฅผ ์ฐ๋ ๊ฒ๋ณด๋ค ๋ฒํผ๋ฅผ ์ด์ฉํด ์ค ๋จ์๋ก ์ฝ์ด์ ํ์ฑํ๋ ํธ์ด ํจ์จ์ ์ ๋๋ค.
์ฌ์ฉ๋ฒ ์ ๋ฆฌ
๊ธฐ๋ณธ
ํด๋น ํด๋์ค๋ java.io ํจํค์ง์ ํฌํจ๋์ด ์์ต๋๋ค.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
= import java.io.*;
BufferedReader
์ฃผ๋ก `readLine()`์ ์ด์ฉํด ํ ์ค ์ ์ฒด๋ฅผ ์ฝ์ต๋๋ค.
Stringํ์ผ๋ก ์ฝ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์๋ฃํ์ผ๋ก ๋ณํํ๊ณ ์ถ๋ค๋ฉด `Integer.parseInt()`, Long.parseLong()` ๋ฑ์ ์ด์ฉํ๋ฉด ๋ฉ๋๋ค.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String line = br.readLine(); // ํ ์ค ์ ์ฒด ์ฝ์
int a = Integer.parseInt(line); // String -> ์ ์ํ์ผ๋ก ๋ณํ
์ฐธ๊ณ ๋ก `readLine()` ๋ฉ์๋์์๋ IOExceptino์ด ๋ฐ์ํ ์ ์์ด
try-catch๋ฌธ์ผ๋ก ์์ธ์ฒ๋ฆฌ๋ฅผ ํ๊ฑฐ๋ throws IOException์ ๋ช ์ํด์ผ ํฉ๋๋ค.
BufferedWriter
`write()`๋ฅผ ์ด์ฉํด ๋ฒํผ์ ๋ด์ฉ์ ์ถ๊ฐํฉ๋๋ค.
์ด๋ ์ค๋ฐ๊ฟ์ด ํ์ํ๋ค๋ฉด `newLine()` ๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค์ด๊ฐ๋ ๋ด์ฉ๋ค์ ๋ชจ๋ Stringํ์ผ๋ก ๋ค์ด๊ฐ์ผ ํฉ๋๋ค.
`flush()`๋ฅผ ํ์ฌ ์ถ๋ ฅํ ์ ์์ต๋๋ค.
์ ์์ ์ผ๋ก๋ ์ฌ์ฉ์ด ๋๋๋ฉด `close()`๋ก ๋ ์ด์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ง ์๊ฒ ๋ค๊ณ ํด์ผํ์ง๋ง
์ผ๋ฐ์ ์ธ ์ฝํ ์์๋ `flush()`๋ง ํด๋ ๋ฌธ์ ์์ต๋๋ค.
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
bw.write("Hello"); // ์ถ๋ ฅ ๋ด์ฉ
bw.newLine(); // ์ค๋ฐ๊ฟ
bw.write(String.valueOf(123)); // ์ซ์๋ ํฌํจ
bw.flush(); // ์ถ๋ ฅ
์ซ์๋ฅผ ์ถ๋ ฅํ ๋ `bw.write(123)` ์ด๋ฐ ์์ผ๋ก ํ๋ฉด ๋ฌธ์์ ์ ๋์ฝ๋ ๊ฐ์ ์ถ๋ ฅํฉ๋๋ค.
์ํ๋ ์๋ก ์ถ๋ ฅํ๋ ค๋ฉด ๋ฌธ์์ด๋ก ๋ณํํด์ผ ํฉ๋๋ค.
์ค์
StringTokenizer ํ์ฉํ๊ธฐ
ํ ์ค์ ์ ๋ ฅ๋ฐ๋ ์ํฉ๋ณด๋ค๋
๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋ ์ ์ ์ฌ๋ฌ ๊ฐ๋ฅผ ์ ๋ ฅ๋ฐ๊ฑฐ๋, N์ค์ ์ ๋ ฅ๋ฐ์์ ์ฒ๋ฆฌํ๋ค๊ฑฐ๋ ๋ฑ๋ฑ
์กฐ๊ธ ๋ ๋ณต์กํ๊ฒ ์ ๋ ฅ์ ๋ฐ์ ์ ์์ต๋๋ค. ๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ๊ธฐ ์ํด ๋ฌธ์์ด์ ์ชผ๊ฐ๋ ์์ ์ด ํ์ํด์ง๋๋ค.
์ด๋ `StringTokenizer` ํด๋์ค๋ฅผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
StringTokenizer ํด๋์ค๋ ๋ฌธ์์ด์ ์ชผ๊ฐ 'ํ ํฐ'์ผ๋ก ๋ง๋ค ์ ์๋ ํด๋์ค์ ๋๋ค.
`java.uil` ํจํค์ง์ ํฌํจ๋์ด ์์ต๋๋ค.
- `StringTokenizer st = new StringTokenizer(๋ฌธ์์ด)`
- ๋์ด์ฐ๊ธฐ(๊ณต๋ฐฑ) ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ๋ถ๋ฆฌ
- `StringTokenizer st = new StringTokenizer(๋ฌธ์์ด, ๊ตฌ๋ถ์)`
- ๊ตฌ๋ถ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ๋ถ๋ฆฌ(๊ตฌ๋ถ์๋ ์๋ฆผ)
- `StringTokenizer st = new StringTokenzier(๋ฌธ์์ด, ๊ตฌ๋ถ์, true/false)`
- ๊ตฌ๋ถ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ๋ถ๋ฆฌํ ๋ ๊ตฌ๋ถ์๋ ํ ํฐ์ ํฌํจํ๋ฉด true, ํ ํฐ์ ํฌํจํ์ง ์์ผ๋ฉด false
์ด๋ ๊ฒ StringTokenizer๋ฅผ ์ ์ธํ๊ณ `nextToken()` ๋ฉ์๋๋ก ํ ํฐ์ ์์ฐจ์ ์ผ๋ก ์ฝ์ต๋๋ค.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine()); // ํ ์ค ์ฝ์ด์ ๊ณต๋ฐฑ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํ๊ฒ ๋ค.
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
StringBuilder ํ์ฉํ๊ธฐ
StringBuilder๋ ๋ฌธ์์ด์ ๊ณ์ ๋ํ๊ฑฐ๋ ์์ ํ ๋ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ฐ๋ณ(mutable) ๋ฌธ์์ด ํด๋์ค์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก Stringํ์ ๋ถ๋ณ(immutable)์ด๋ผ์ ๋ฌธ์์ด์ ๋ํ ๋๋ง๋ค
์๋ก์ด ๊ฐ์ฒด๋ฅผ ๊ณ์ ๋ง๋ค์ด๋ ๋๋ค.
String s = "";
s += "A";
s += "B";
์ฌ๊ธฐ์ s๊ฐ ๊ฒฐ๊ณผ์ ์ผ๋ก "AB"๊ฐ ๋๊ธด ํ์ง๋ง ๊ทธ ๊ณผ์ ์์ "", "A", "AB" ์ด๋ฐ ๋ฌธ์์ด์ด ๊ณ์ ์๋ก ์์ฑ๋์
๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋๊ณ ์๋๊ฐ ๋น๊ต์ ๋๋ฆฝ๋๋ค.
๋ฌธ์์ด์ ๋ฐ๋ณตํด์ ๋ถ์ผ ๋๋ ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ๋ถํ์ํ ๋ณต์ฌ/์์ฑ์ ๋ฐฉ์งํ๋ StringBuilder๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
- `append()`๋ก ๋ฌธ์์ด์ ์ถ๊ฐํ๊ณ
- `toString()`์ผ๋ก ์ผ๋ฐ ๋ฌธ์์ด๋ก ๋ณํํฉ๋๋ค.
StringBuilder sb = new StringBuilder();
sb.append("A").append("B").append(123).append('\n');
System.out.println(sb.toString());
BufferedWriter์ ํจ๊ป ์ฐ๋ฉด ์ด๋ ๊ฒ ์ธ ์ ์์ต๋๋ค.
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
for (int i = 0; i < N; i++) {
sb.append(i).append('\n');
}
bw.write(sb.toString());
bw.flush();
๊ทธ๋ ๊ฒ ํผ ๋ฐฑ์ค 15552๋ฒ์ ํ์ด๋
import java.io.*;
import java.util.*;
public class Main {
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 testcase = Integer.parseInt(br.readLine());
for(int i=0; i<testcase; i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
bw.write(String.valueOf(a+b));
bw.newLine();
}
bw.flush();
}
}'โJava > ์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Java] ๋์ ํ๋ก๊ทธ๋๋ฐ(DP, Dynamic Programming) / ๋ฐฑ์ค 12865๋ฒ / ๋ฐฐ๋ญ ๋ฌธ์ (0) | 2025.11.13 |
|---|---|
| [Java] ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ / ๋ฐฑ์ค 1253๋ฒ (0) | 2025.11.07 |
| [JAVA] ์ฌ๋ผ์ด๋ฉ ์๋์ฐ (๋ฐฑ์ค 12891๋ฒ) (0) | 2025.05.22 |
| [JAVA] ํฌ ํฌ์ธํฐ (๋ฐฑ์ค 2018๋ฒ, ๋ฐฑ์ค 1940๋ฒ) (1) | 2025.05.18 |
| [JAVA] ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ (๋ฐฑ์ค 11659๋ฒ, ๋ฐฑ์ค 2042๋ฒ) (0) | 2025.05.17 |
