10871번: X보다 작은 수
https://www.acmicpc.net/problem/10871
# 코드
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 문자열 분리를 위한 StringTokenizer (공백 기준)
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int x = Integer.parseInt(st.nextToken());
// 수열 A를 담는 N 크기의 정수 배열 arr
int arr[] = new int[n];
// 둘째 줄(=수열 A) 문자열 분리를 위한 새로운 StringTokenizer 생성 (공백 기준)
StringTokenizer st_2 = new StringTokenizer(br.readLine(), " ");
// 매 반복마다 반환되는 토큰의 값을 배열에 저장
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st_2.nextToken());
}
// 수열 A의 원소가 X보다 작은 경우만 출력하기
for (int i = 0; i < n; i++) {
if (arr[i] < x) {
bw.write(arr[i] + " ");
}
}
// Reader 버퍼 닫기
br.close();
// Writer 버퍼 비운 뒤(flush) 닫기(close)
bw.flush();
bw.close();
}
}
10807번: 개수 세기
https://www.acmicpc.net/problem/10807
# 코드
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 정수의 개수 N
int n = Integer.parseInt(br.readLine());
// 둘째 줄 문자열 분리를 위한 StringTokenizer 생성 (공백 기준)
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
// N 크기의 정수 배열 arr
int arr[] = new int[n];
// 매 반복마다 반환되는 토큰의 값을 배열에 저장
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
// 찾으려는 정수 V
int v = Integer.parseInt(br.readLine());
int count = 0;
// V 개수 카운트
for (int i = 0; i < n; i++) {
if (arr[i] == v) {
count++;
}
}
// 개수 출력
// BufferedWriter 출력은 String형으로 변환이 필요함
bw.write(String.valueOf(count));
// Reader 버퍼 닫기
br.close();
// Writer 버퍼 비운 뒤 닫기
bw.flush();
bw.close();
}
}
- BufferedWriter 에서 정수를 출력할 때는 bw.write(String.valueOf(count)); 와 같이 String 형으로 변환을 해주어야 한다.
- bw.write(count); 처럼 형변환 없이 작성할 경우 해당 정수가 아스키코드에 따른 문자로 출력되기 때문이다.
- 간단하게는 bw.write(count + ""); 와 같이 자동 형변환을 이용할 수도 있다.
5597번: 과제 안 내신 분..?
https://www.acmicpc.net/problem/5597
# 코드
import java.io.*;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
// 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int arr[] = new int[30];
// fill() 메소드를 이용해 arr 배열을 모두 0으로 초기화
Arrays.fill(arr, 0);
// 28명의 제출자를 배열에 표시
for (int i = 0; i < 28; i++) {
int submit = Integer.parseInt(br.readLine());
arr[submit - 1] = 1;
}
// 배열에서 값이 0인 학생 출석번호 출력
for (int j = 0; j < 30; j++) {
if (arr[j] == 0) {
bw.write(String.valueOf(j + 1) + "\n");
}
}
// Reader 버퍼 닫기
br.close();
// Writer 버퍼 비운 뒤 닫기
bw.flush();
bw.close();
}
}
- Arrays.fill(arr, 0); 구문을 이용해 배열 arr의 값을 모두 0으로 초기화할 수 있다.
2738번: 행렬 덧셈
https://acmicpc.net/problem/2738
# 코드
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// 빠른 입출력을 위한 BufferedReader 와 BufferedWriter
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// N, M 문자열 분리를 위한 StringTokenizer
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
// N * M 크기의 2차원 배열(=행렬) A, B 생성
int[][] arr_a = new int[n][m];
int[][] arr_b = new int[n][m];
// 행렬 A
for (int i = 0; i < n; i++) {
// 매 행의 문자열 분리를 위한 StringTokenizer
StringTokenizer st_a = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < m; j++) {
arr_a[i][j] = Integer.parseInt(st_a.nextToken());
}
}
// 행렬 B
for (int i = 0; i < n; i++) {
// 매 행의 문자열 분리를 위한 StringTokenizer
StringTokenizer st_b = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < m; j++) {
arr_b[i][j] = Integer.parseInt(st_b.nextToken());
}
}
// 두 행렬을 더한 결과 행렬
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
bw.write(String.valueOf(arr_a[i][j] + arr_b[i][j]) + " ");
}
bw.write("\n");
}
// Reader 버퍼 닫기
br.close();
// Writer 버퍼 비운 뒤 닫기
bw.flush();
bw.close();
}
}
- 2차원 배열을 선언할 때도 1차원 배열 때와 같이 int[][] arr; 또는 int arr[][]; 의 형식이 모두 가능하다.
'코딩테스트 > 자바 문제풀이' 카테고리의 다른 글
[새싹: 문자열 (2)] 백준 2754, 27866, 11718, 9086 (0) | 2024.07.08 |
---|---|
[새싹: 문자열 (1)] 백준 11654, 2743, 2744 (0) | 2024.07.07 |
[새싹: 빠른 입출력] 백준 15552 (0) | 2024.07.05 |
[새싹: 반복] 백준 2741, 10872, 10950, 10952, 2739, 2438, 10951 (0) | 2024.07.04 |
[새싹: 조건] 백준 1330, 9498, 14681, 2753, 2420 (0) | 2024.07.03 |