โ ๋ฌธ์
๋น ๋ฅด๊ฒ ์ ๋ ฅ๋ฐ๊ณ ์ถ๋ ฅํ๋ ๋ฌธ์
โ๐ฅ ์ ๋ ฅ
์ฒซ ์ค์ ํ ์คํธ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. T๋ ์ต๋ 1,000,000์ด๋ค. ๋ค์ T์ค์๋ ๊ฐ๊ฐ ๋ ์ ์ A์ B๊ฐ ์ฃผ์ด์ง๋ค. A์ B๋ 1 ์ด์, 1,000 ์ดํ์ด๋ค.
โ๐ฅ ์ถ๋ ฅ
๊ฐ ํ ์คํธ์ผ์ด์ค๋ง๋ค A+B๋ฅผ ํ ์ค์ ํ๋์ฉ ์์๋๋ก ์ถ๋ ฅํ๋ค.
โ
๐ก ํ์ด
- ์๊ฐ์ ํ์ 1.5์ด๋ค. ๋ฐ๋ผ์ Scanner๋ฅผ ์ฌ์ฉํ๋ฉด ์๊ฐ์ด๊ณผ๋ก ์ค๋ต์ฒ๋ฆฌ ๋๋ค.
- System.out.printn ๋ ์ฌ์ฉํ๋ฉด ์๊ฐ์ด๊ณผ๋๋ค.
1000๋ง๊ฐ์ ์ซ์๋ฅผ ์ ๋ ฅ ๋ฐ์ ๋ ๊ธฐ์ค์ผ๋ก Scanner๋ฅผ ์ด์ฉํ๋ฉด ์ํ์๊ฐ 6์ด ๊ฑธ๋ฆฐ๋ค. ํ์ง๋ง BufferedReader์ ์ฌ์ฉํ๋ฉด 0.9์ด ๋ฐ์ ๊ฑธ๋ฆฌ์ง ์๋๋ค. ์ด์ฒ๋ผ Scanner์ BufferedReader์ ์๋๋ ํฌ๊ฒ ์ฐจ์ด๋๋ค, ๋ฐ๋ผ์ ์ ๋ ฅ์ด ๋ง์ ์๊ณ ๋ฆฌ์ฆ์ ํ ๋๋ BufferedReader์ ์ฌ์ฉํด ์ฃผ์ด์ผ ํ๋ค. ๋ํ ์ด ๋ฌธ์ ์ ์ ๋ ฅ์๋ ์ต๋ 100๋ง๊ฐ์ ํ ์คํธ ์ผ์ด์ค๊ฐ ์ฃผ์ด์ง ์ ์๋ค๊ณ ๋ช ์๋์ด ์๋ค. ์ผ์ด์ค๊ฐ ๋์ด๋๋ฉด ๋์ด๋ ์๋ก ์๊ธฐ๋ ๋ฌธ์ ์ ์ System.out.println()์ ํธ์ถ ํ์๊ฐ ๊ณ์ ์ฆ๊ฐํด์ ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋์ BufferedWriter๋ฅผ ์ฌ์ฉํด์ ํ์ด์ผ๋ง ํ๋ ๋ฌธ์ ์ด๋ค.
๐ก ๊ทธ๋ ๋ค๋ฉด Scanner์ ์ BufferedReader๋ณด๋ค ๋๋ฆด๊น?
Scanner์ ๋ฒํผ ์ฌ์ด์ฆ๋ 1,024๊ฐ์ ๋ฌธ์๋ฅผ ์ ์ฅํ ์ ์๋ ๋ฐ๋ฉด, BufferdReader๋ 8,192๊ฐ์ ๋ฌธ์๋ฅผ ์ ์ฅํ ์ ์๋ค. ๋ฐ๋ผ์ ๋ฒํผ ํฌ๊ธฐ๊ฐ ๋ ์์ Scanner๋ ๋ ๋น๋ฒํ ๋ฒํผ๋ฅผ ๋น์์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋ ๋๋ฆฌ๋ค. ๋ Scanner๋ ์ ๋ ฅ ๋ฐ์ ๋ ์ ๊ท์์ ์ด์ฉํ์ฌ ์ ๋ ฅ ๊ฐ์ ํ์ฑํ๋ค.
์๋ฅผ ๋ค๋ฉด, 1,234,567์ฒ๋ผ ์ซ์ ์ฌ์ด์ ์ฝค๋ง๊ฐ ์์ด๋ ์ ๊ท์์ ํตํด ์ ์๋ก ํ์ฑํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค. ์ฆ, ๋ฒํผ ์ฌ์ด์ฆ๊ฐ ์๊ณ , ์ ๊ท์์ ์ด์ฉํ์ฌ ์ ๋ ฅ ๊ฐ์ ํ์ฑํ๋ ๊ณผ์ ๋๋ฌธ์ Scanner๊ฐ BufferedReader๋ณด๋ค ๋ ๋๋ฆฐ ๊ฒ์ด๋ค.
BufferedReader๋ฅผ ์ฌ์ฉํ ๋๋ ๋ณดํต readLine()๋ฅผ ์ด์ฉํด์ ๋ผ์ธ ๋จ์๋ก ์ ๋ ฅ ๋ฐ๋๋ค. readLine()์ ๊ฐํ์ ๋์ผ๋ก ํ๋ ๋ฌธ์์ด์ ์ฝ์ด์์ ๊ฐํ์ ์ ์ธํ ๋ฌธ์์ด์ ๋ฐํํ๋ค. BufferedReader๋ฅผ ์ฌ์ฉํ ๋๋ split ๋๋ StringTokenizer๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ฅ๋ฐ์ ๊ฒ์ ์ชผ๊ฐ๊ณ , ํ์์ ๋ฐ๋ผ intํ ๋ฑ์ผ๋ก ํ๋ณํํด์ ์ฌ์ฉํ๋ค.
๐ก StringTokenizer, StringBuilder, BufferedWriter
StringTokenizer:
- ์ฅ์ :
- ๋ฌธ์์ด์ ํน์ ๊ตฌ๋ถ์(delimiter)๋ฅผ ๊ธฐ์ค์ผ๋ก ์ชผ๊ฐ์ด ์ฒ๋ฆฌํ ์ ์๋ค. ์ด๋ ๋ฌธ์์ด์ ๋น ๋ฅด๊ฒ ํน์ ํจํด์ ๋ฐ๋ผ ๋ถํ ํ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ๊ธฐ๋ณธ ์๋ฃํ์ธ int, double ๋ฑ์ ํํ๋ก ์ฝ๊ฒ ๋ณํํ ์ ์๋ค.
- ๋จ์ :
- ๊ตฌ๋ถ์๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ๋ถ๋ฆฌํ๋ฏ๋ก, ์ ํํ ๊ตฌ๋ถ์๋ฅผ ์ง์ ํด์ฃผ์ด์ผ ํ๋ค.
- ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ๋ฐ์ํ ์ ์๋ค. (์: Integer.parseInt() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ int๋ก ๋ณํํ๋ ๊ณผ์ ์์)
StringBuilder:
- ์ฅ์ :
- ๋ฌธ์์ด์ ์์ ํ ๋ ๋งค๋ฒ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ์ง ์๊ณ ๊ธฐ์กด์ ๋ฌธ์์ด์ ์์ ์ ๊ฐํ ์ ์๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฑ๋ฅ ๋ฉด์์ ์ด์ ์ ๊ฐ์ ธ์จ๋ค.
- ๋ฌธ์์ด ๊ฒฐํฉ ์ฐ์ฐ(+)์ ๋ฐ๋ณต์ ์ผ๋ก ์ํํ ๋ ํจ์จ์ ์ด๋ค
- ๋จ์ :
- ์ฌ๋ฌ ์ค๋ ๋์์ ๋์์ StringBuilder๋ฅผ ์์ ํ๋ ค๊ณ ํ๋ฉด ์๊ธฐ์น ์์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ ์ ์๋ค.
BufferedWriter.write():
- ์ถ๋ ฅํ ๋๋ง๋ค ๋ฐ๋ก ์ถ๋ ฅ์ด ๋๋ ๊ฒ์ด ์๋๋ผ, ๋ด๋ถ์ ๋ฒํผ์ ์์ธ ๋ค์ ํ ๋ฒ์ ์ถ๋ ฅ๋๋ค. ์ด๋ ์ถ๋ ฅ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๋ฐ ๋์์ด ๋๋ค. write() ๋ฉ์๋๋ ๋ฌธ์์ด ์ธ์๋ ๋ฌธ์(char), char ๋ฐฐ์ด, ๋ฌธ์์ด์ ์ผ๋ถ๋ถ, ์ค ๋ฐ๊ฟ ๋ฑ์ ์ถ๋ ฅํ ์ ์์ผ๋ฉฐ, flush() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ฒํผ๋ฅผ ๋น์์ฃผ์ด์ผ ์ค์ ์ถ๋ ฅ์ด ์ด๋ฃจ์ด์ง๋ค.
โ ํ์ด ์ฝ๋ : StringTokenizer + BufferedWriter
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
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 T = Integer.parseInt(br.readLine());
StringTokenizer st; // ๋ฌธ์์ด ๋ถ๋ฆฌ๋ฅผ ์ํด StringTokenizer์ ์์ฑ
for(int i = 0; i< T; i++) {
st = new StringTokenizer(br.readLine()," ");
// StringTokenizer์ ์์ฑํด์ฃผ๋ฉด์ ๋ฌธ์๋ฅผ ์
๋ ฅ๋ฐ๋๊ฒ์ ๋ฐ๋ณต
bw.write((Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken()))+"\n");
// StringTokenizer ํ ํฐ(=๋ถ๋ฆฌ๋ ๋ฌธ์) ๋ฐํ
// String ์ด๋ฏ๋ก ๋ฐํ๋๋ฏ๋ก ๊ณ์ฐ์ ์ํด ์ ์ํ์ผ๋ก ํ๋ฒํ (Integer.parseInt ์ฌ์ฉ)
// ํ๋ณํ๋ ํ ํฐ ๋ ๊ฐ๋ฅผ ๋ํด์ค ๊ฐ์ BufferedWriter.write() ์ ๋ด๊ธฐ
}
br.close(); // ์์ ํด์
bw.flush(); // ๋ฒํผ ๋น์ฐ๊ธฐ
bw.close(); // ์์ ํด์ (๋ฒํผ ๋ซ๊ธฐ)
}
}
โ ํ์ด ์ฝ๋ : StringTokenizer + StringBuilder
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st;
StringBuilder sb = new StringBuilder();
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine()," ");
sb.append(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken())).append('\n');
}
br.close();
System.out.println(sb);
}
}
'Algorithm > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 11022๋ฒ : A+B-8 ์๋ฐ / java (1) | 2024.04.23 |
---|---|
[๋ฐฑ์ค] 11021๋ฒ : A+B-7 ์๋ฐ / java (0) | 2024.04.23 |
[๋ฐฑ์ค] 25314๋ฒ ์ฝ๋ฉ์ ์ฒด์ก๊ณผ๋ชฉ ์ ๋๋ค - ์๋ฐ / java (0) | 2024.04.12 |
[๋ฐฑ์ค] 25304๋ฒ ์์์ฆ - ์๋ฐ / java (0) | 2024.04.12 |
[๋ฐฑ์ค] 8393๋ฒ ํฉ - ์๋ฐ / java (0) | 2024.04.12 |