# 문제
주소: https://www.acmicpc.net/problem/10871
입력 받은 값에서 X보다 작은 수를 출력하기.
# 코드
▼ 코드1
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
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));
String[] nx = br.readLine().split(" ");
int N = Integer.parseInt(nx[0]);
int X = Integer.parseInt(nx[1]);
String[] input = br.readLine().split(" ");
int[] numbers = new int[N];
int result;
for (int i = 0; i < N; i++) {
numbers[i] = Integer.parseInt(input[i]);
if (numbers[i] < X) {
result = numbers[i];
bw.write(result + " ");
}
}
bw.flush();
bw.close();
br.close();
}
}
▼ 코드2
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
public class BOJ10871_v2 {
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[] nx = Arrays.stream(br.readLine().split(" "))
.mapToInt(Integer::parseInt)
.toArray();
int[] numbers = Arrays.stream(br.readLine().split(" "))
.limit(nx[0])
.mapToInt(Integer::parseInt)
.toArray();
int result;
for (int i = 0; i < nx[0]; i++) {
if (numbers[i] < nx[1]) {
result = numbers[i];
bw.write(result + " ");
}
}
bw.flush();
bw.close();
br.close();
}
}
# 입/출력 결과
▼ 코드1 입/출력 결과
▼ 코드2 입/출력 결과
# 과정
▼ 코드1 과정
- BufferedReader + InputStreamReader 클래스를 사용하여 입력값 받기.
- BufferedWriter + OutputStreamWriter 사용해서 출력하기.
- String[] nx에 공백 기준으로 입력값 받기.
- int N과 int X에 각각 nx 요소 값 저장하기.
- String[] input = 공백 기준으로 입력값 받기.
- int[] numbers 에 N만큼 배열을 생성하기.
- int result; 결과값 저장할 변수 생성.
- for문 사용하여 계산
- : 조건식을 int i = 0; i < N; i++ 작성.
- : numbers[i] 마다 input[i]를 형번환해서 값 저장.
- : if문을 사용하여 numbers[i]가 X보다 적으면 result에 numbers[i] 값 저장
- : 그리고 bw.write()를 사용하여 result + " " 라고 작성하여 result값과 공백을 출력하도록 하기.
- for문 밖에서 .flush() 사용하여 출력과 데이터 비우기.
- bw와 br에 .close() 해주기.
▼ 코드2 과정
- BufferedReader + InputStreamReader 클래스를 사용하여 입력값 받기.
- BufferedWriter + OutputStreamWriter 사용해서 출력하기.
- int[] nx에 Arrays사용
- : .stream()을 사용하여 입력값을 공백 기준으로 나누어서 받기.
- : .mapToInt() 사용하여 입력받은 값들을 숫자타입으로 변형.
- : .toArray() 사용하여 배열로 저장.
- int[] numbers에 Arrays사용
- : (3)번과 동일한 방법.
- : 추가된 것은 .limit()를 사용하여 nx[0] 만큼 입력값 받기.
- int result 선언.
- for문 사용해서 계산하기.
- : int i = 0; i < nx[0]; i++ 조건식
- : if문을 사용하여 numbers[i]가 nx[0] 보다 작으면
- : result에 numbers[i] 값 저장하기.
- : bw.write() 사용하여 result + " " 모아두기.
- for문 밖에서 .flush() 사용하여 출력과 데이터 비우기.
- br과 bw에 .close() 사용하여 닫아주기.
# 느낀 점
- 이틀 정도 1차원 배열에 대해서 익숙하지 않아서 계속 작성하고 시도해본 결과 오늘 문제 풀면서 조금은 익숙해졌다고 느꼈다. 왜냐하면 먼저 노트에 작성할 때 어떻게 풀어야할지 순차적으로 잘 작성되었기 때문이다.
- 나중에 코드로 옮길 때 실패해서 왜 그런지 찾아보고 다시 수정하는 일도 있었지만, 결국엔 성공!
'코딩 테스트' 카테고리의 다른 글
[코딩테스트 ] 백준 2562번: 최댓값 (0) | 2025.05.20 |
---|---|
[코딩테스트] 백준 10818번: 최소, 최대 (0) | 2025.05.20 |
[코딩테스트] 백준 10807번: 개수 세기 (0) | 2025.05.19 |
[코딩테스트] 백준 10951번: A+B - 4 (0) | 2025.05.16 |
[코딩테스트] 백준 10952번: A+B - 5 (0) | 2025.05.16 |