🟤 백준 10871번: X보다 작은 수 (브론즈5)
문제 풀이
1차 풀이
import java.util.*;
import java.lang.*;
import java.io.*;
// 문제 풀이: 250323(일)
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 n = Integer.parseInt(st.nextToken());
int x = Integer.parseInt(st.nextToken());
// 다음 행에 있는 입력값 받기
st = new StringTokenizer(br.readLine());
// n 크기의 배열 생성
int[] arr = new int[n];
// int로 형 변환
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
// 결과: x보다 작은 수 출력
for (int i = 0; i < n; i++) {
if (arr[i] < x) {
System.out.print(arr[i] + " ");
}
}
}
}

StringTokenizer
nextToken()
: 다음 토큰 반환 (String으로 반환)
2차 풀이
import java.util.*;
import java.lang.*;
import java.io.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder(); // 출력 모음용
// 문자열을 구분자로 분리하여 입력 받기
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int x = Integer.parseInt(st.nextToken());
// 다음 행에 있는 입력값 받기
st = new StringTokenizer(br.readLine());
// n 크기의 배열 생성
int[] arr = new int[n];
// int로 형 변환
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
// StringBuilder에 문자열 추가
for (int i = 0; i < n; i++) {
if (arr[i] < x) {
sb.append(arr[i]).append(" "); // 출력 시 공백 구분자
}
}
// 결과: x보다 작은 수 출력
System.out.println(sb);
}
}

StringBuilder로 한 번에 출력
String 객체끼리 더하는 방식은 메모리 할당과 해제 발생
→ 덧셈 연산 많아지면 성능적으로 좋지 않음
참고: Java에서 StringBuffer와 StringBuilder를 사용하는 이유
많은 문자열을 연결하면 많은 중간 문자열 객체가 생성되어 비효율적인 코드 생성됨
∵ Java에서 String 객체는 변경 불가능
하나의 문자열을 다른 문자열과 연결하면 새 문자열 생성되고, 이전 문자열은 가비지 컬렉터로 들어감
StringBuilder는 변경 가능한 문자열을 만들어 주기 때문에 String을 합치는 작업 시 사용
StringBuilder sb = new StringBuilder(); // 출력 모음용
// StringBuilder에 문자열 추가
for (int i = 0; i < n; i++) {
if (arr[i] < x) {
sb.append(arr[i]).append(" "); // 출력 시 공백 구분자
}
}
append()
: 인자로 연결하고자 하는 문자열 추가
참고 자료
https://onlyfor-me-blog.tistory.com/317
[JAVA] StringBuilder란? StringBuilder 사용법
자바에서 문자열하면 String을 대개 많이 떠올리고 사용할 것이다.그런데 이 문자열이 1개 이상 있어서 이것들을 더해야(합쳐야) 한다고 하면 어떤 방법을 쓸 수 있을까?간단하게는 이 방법을 쓸
onlyfor-me-blog.tistory.com
'Coding Test > PS' 카테고리의 다른 글
[백준/Java] 15552번: 빠른 A+B (브론즈4) (0) | 2025.03.27 |
---|---|
[백준/Java] 3052번: 나머지 (브론즈2) (0) | 2025.03.25 |
[백준/Java] 2739번: 구구단 (브론즈5) (0) | 2025.03.25 |
[백준/Java] 1008번: A/B (브론즈5) (0) | 2025.03.24 |
[백준/Java] 10807번: 개수 세기 (브론즈5) (0) | 2025.03.23 |