Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 내일배움캠프
- 스프링시큐리티
- MySQL
- css
- 그라파나
- mysqlworkbench
- 소셜로그인
- 도커
- 자바
- Infra
- 인텔리제이
- 백준
- 키오스크
- 스프링예외처리
- 프로메테우스
- EC2
- 오버라이딩
- tomcat
- 연동
- o'auth2
- 깃허브
- JWT
- 알고리즘
- Intellij
- 테스트코드
- 스파르타코딩클럽
- java
- 스파르타
- AWS
- 스프링
Archives
- Today
- Total
개발스토리지😃
[알고리즘] 자바풀이 백준 10871번 X보다 작은 수 Scanner, StringBuilder, BufferedReader 풀이 본문
알고리즘/자바
[알고리즘] 자바풀이 백준 10871번 X보다 작은 수 Scanner, StringBuilder, BufferedReader 풀이
believekim 2024. 11. 28. 20:27
https://www.acmicpc.net/problem/10871
Scanner, StringBuilder, BufferedReader를 사용한 풀이를 공유해보고자 한다.
Scanner
작은 규모의 입력에서 사용되고 코드가 직관적이고 간단합니다. 자동으로 공백, 줄바꿈 등을 처리해줍니다.
StringBuilder
문자열을 효율적으로 다루기 위해 사용됩니다.
문자열이 반복될 때, StringBuilder는 내부 버퍼를 이용하여 문자열을 수정하고 추가할 수 있어서 성능상 이점이 있습니다.
BufferedReader
readLine() 메서드를 사용하여 한 줄씩 입력을 받고 StringBuilder와 같이 내부 버퍼를 사용해 입력을 처리합니다.
이와 더불어 문자열을 구분자를 기준으로 분리하는 데 사용되는 StringTokenizer를 사용하였습니다.
StringTokenizer는 split()과 유사한 기능을 제공하지만 성능상 더 유리할 수 있습니다.
공통부분
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 배열의 크기
int X = sc.nextInt(); // 비교할 값
int[] arr = new int[N];
// 배열에 N개의 값 입력 받기
for (int i = 0; i < N; i++) {
arr[i] = sc.nextInt();
}
// Scanner를 사용하여 출력
scanner(N, X, arr);
// StringBuilder를 사용하여 출력
stringBuilder(N, X, arr);
// BufferedReader와 StringTokenizer를 사용하여 출력
stringTokenizerWithBufferedReader(N, X, arr);
// Scanner 닫기
sc.close();
}
Scanner
// Scanner를 사용하여 X보다 작은 값들만 출력하는 함수
public static void scanner(int N, int X, int[] arr) {
for (int i = 0; i < N; i++) {
if (arr[i] < X) {
System.out.print(arr[i] + " ");
}
}
}
StringBuilder
// StringBuilder를 사용하여 X보다 작은 값들만 출력하는 함수
public static void stringBuilder(int N, int X, int[] arr) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < N; i++) {
if (arr[i] < X) {
sb.append(arr[i]).append(" ");
}
}
System.out.println(sb.toString());
}
BufferedReader
// BufferedReader와 StringTokenizer를 사용하여 X보다 작은 값들만 출력하는 함수
public static void stringTokenizerWithBufferedReader(int N, int X, int[] arr) throws IOException {
// BufferedReader로 입력 받기
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 첫 번째 줄은 이미 입력 받았기 때문에 두 번째 줄의 값들을 받아옵니다.
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
StringBuilder sb = new StringBuilder();
// X보다 작은 값들만 StringBuilder에 추가
for (int i = 0; i < N; i++) {
int value = Integer.parseInt(st.nextToken());
if (value < X) {
sb.append(value).append(' ');
}
}
// 결과 출력
System.out.println(sb.toString());
}
마지막 공백 제거
Scanner => if문 사용
// 마지막 값이면 공백을 붙이지 않음
if (i == N - 1) {
System.out.print(arr[i]);
} else {
System.out.print(arr[i] + " ");
}
StringBuilder, BufferedReader => trim() 사용
// 양쪽 공백을 제거하는 trim()사용
System.out.println(sb.toString().trim());
'알고리즘 > 자바' 카테고리의 다른 글
[Java] Collection 구조 및 메서드 (0) | 2025.03.28 |
---|---|
[Java] 계산기 만들기 Level1 트러블 슈팅 (1) | 2025.02.27 |
[알고리즘] 보드게임 유령대소동 자바코드 (0) | 2024.12.11 |