알고리즘 언어를 파이썬에서 자바로 바꾸기로 결정하면서
입출력 받는 방법을 계속 까먹어서 정리
Scanner보다 BufferedReader가 속도가 더 빠르기 때문에
속도가 중요한 코딩테스트에서는 BufferedReader 사용하기!
입력
1. 한 줄에 하나씩 정수 입력 받기
// 예제 입력
1 2
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 = new StringTokenizer(br.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
System.out.println(a + b);
}
}
2. 한 줄 전체를 읽은 후, 공백 기준으로 나누기
// 예제 입력
a b c d e
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));
String line = br.readLine();
// StringTokenizer로 공백 기준으로 문자열 나누기
StringTokenizer st = new StringTokenizer(line);
// 각 단어 또는 숫자가 있을 때까지 출력
while (st.hasMoreTokens()) {
String token = st.nextToken();
System.out.println(token);
}
}
}
3. 한 줄 전체를 읽은 후, 구분자 기준으로 나누기
// 예제 입력
2010-10-10
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));
String line = br.readLine();
// '-'를 구분 문자로 StringTokenizer 사용
StringTokenizer st = new StringTokenizer(line, "-");
while (st.hasMoreTokens()) {
String token = st.nextToken();
System.out.println(token);
}
}
}
4. 이차원 배열 입력 받기 (첫 줄에 n, m)
// 예제 입력
6 4
0 -1 0 0 0 0
-1 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 1
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));
// 첫 줄에 n과 m 입력받기
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
// 2차원 배열 선언
int[][] array = new int[n][m];
// 2차원 배열에 입력값 넣기
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < m; j++) {
array[i][j] = Integer.parseInt(st.nextToken());
}
}
// 2차원 배열 출력
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
}
}
출력
1. 공백 기준으로 구분해서 출력
public class Main {
public static void main(String[] args) {
int[] array = {1, 2, 3, 4, 5};
StringBuilder sb = new StringBuilder();
for (int i = 0; i < array.length; i++) {
sb.append(array[i]);
if (i != array.length - 1) {
sb.append(" "); // 마지막 요소가 아닌 경우 공백 추가
}
}
// 전체 출력
System.out.println(sb.toString());
}
}
// 출력 결과
1 2 3 4 5
2. 이차원 배열 출력
public class Main {
public static void main(String[] args) {
int[][] array = {
{1, -1, 0, 0, 0, 0},
{0, -1, 0, 0, 0, 0},
{0, 0, 0, 0, -1, 0},
{0, 0, 0, 0, -1, 1}
};
StringBuilder sb = new StringBuilder();
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
sb.append(array[i][j]);
if (j != array[i].length - 1) {
sb.append(" "); // 요소 사이에 공백 추가
}
}
sb.append("\n"); // 각 행이 끝난 후 줄바꿈 추가
}
// 전체 출력
System.out.print(sb.toString());
}
}
// 출력 결과
1 -1 0 0 0 0
0 -1 0 0 0 0
0 0 0 0 -1 0
0 0 0 0 -1 1
'알고리즘 > 문제 유형' 카테고리의 다른 글
순열, 조합 파이썬으로 구현하기 (dfs) (0) | 2024.10.06 |
---|---|
그리디(Greedy) 알고리즘 (0) | 2024.03.22 |
DP (Dynamic Programming) (1) | 2023.11.20 |
BFS / DFS (0) | 2023.11.10 |