나의답안
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
String b = sc.next();
String c = a+b;
System.out.print(c);
}
}
다른사람의 답
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.print(br.readLine().replaceAll(" ", ""));
}
}
다른사람의 답안을 보니 공백이 많은 문자열들은 이렇게 처리하는 것도 좋은 방법이라는 생각이 들었습니다..!
제 코드는 너무나 단순하고 .. 다들 생각할 수 있는 ..^^
코드 실행 흐름
- BufferedReader 생성:
- BufferedReader 객체 br이 생성되어 사용자 입력을 처리합니다.
- System.in은 콘솔 입력을 받을 수 있는 기본 입력 스트림입니다.
- br.readLine() 호출:
- 콘솔에서 한 줄의 입력을 읽습니다.
- 읽은 데이터는 문자열로 반환됩니다.
- replaceAll(" ", "") 처리:
- 입력된 문자열의 모든 공백을 제거합니다.
- 정규 표현식 " "는 공백 문자 한 칸을 의미하며, 빈 문자열 ""로 대체합니다.
- 출력:
- 공백이 제거된 문자열을 출력합니다.
코드 주요 포인트
- 공백 제거:
- replaceAll(" ", "")는 공백을 제거하기 위한 방식으로 적합합니다.
- 필요에 따라 정규 표현식을 확장할 수도 있습니다.
- 효율성:
- BufferedReader는 대량의 입력을 처리할 때 빠르게 작동합니다.
- 예외 처리:
- BufferedReader 사용 시 IOException이 발생할 수 있으므로, 반드시 처리해야 합니다.
- 위 코드에서는 throws IOException으로 예외를 위임합니다.
BufferedRedaer
Java의 입력 스트림을 처리하는 클래스 중 하나로, 문자 기반 입력을 효울적으로 처리.
주로 콘솔 입력이나 파일 읽기를 다룰 때 사용
주요특징
1. 버퍼링 지원
- 데이터를 메모리 버퍼에 저장하고, 한 번에 처리하여 성능을 향상 시킵니다.
- 반복적인 읽기 작업에서 빠릅니다.
2. 라인 단위 처리
- readLine() 메서드를 사용하여 한 번에 한줄을 읽어올 수 있습니다.
3. 유연성
- InputStream이나 Reader와 함께 사용할 수 있습니다.
- 다양한 입력 소스(콘솔, 파일, 네트워크 등)을 처리할 수 있습니다.
BufferedReader 생성 방법
일반적으로 이렇게 생성
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- InputStreamReader : 바이트 기반 스트림(System.in)을 문자 기반 스트림으로 변환합니다.
- BufferedReader : 변환된 문자 스트림을 버퍼링하여 효율적으로 처리합니다.
replaceAll 의 사용
public String replaceAll(String regex, String replacement)
매개변수
1. regex
- 교체 대상이 되는 문자열의 정규 표현식
- 정규 표현식을 활용하여 더 복잡한 패턴을 지정할 수 있음
- Ex) " " (공백), "[0-9]" (숫자) , "[a-zA-Z]" (영문자)
2. replacement
- 교체할 문자열
반환값
교체가 완료된 새로운문자열(String)을 반환합니다.
원본 문자열은 불변 상태로 유지됩니다.
사용예시
// 1. 공백제거
String input = "Hello World";
String result = input.replaceAll(" ", "");
System.out.println(result); // 출력: HelloWorld
// 2. 숫자제거
String input = "abc123def456";
String result = input.replaceAll("[0-9]", "");
System.out.println(result); // 출력: abcdef
// 3. 특정 문자 대체
String input = "apple, orange, banana";
String result = input.replaceAll(",", ";");
System.out.println(result); // 출력: apple; orange; banana
주의할 점
- 정규 표현식 사용
- 첫 번째 매개변수는 단순 문자열이 아니라 정규 표현식으로 동작합니다.
- 만약 단순한 문자열을 교체하려면 replace() 메서드를 사용하는 것이 더 적합합니다.
- 원본 문자열 변경 X
- String은 불변 객체(immutable)입니다. 따라서 replaceAll은 원본 문자열을 수정하지 않고, 수정된 새 문자열을 반환합니다.
replaceAll vs replace
메서드 | 용도 | 정규표현식 지원 | 예시 |
replace | 단순한 특정 문자열을 다른 문자열로 교체 | X | "abc".replace("a", "x"); |
replaceAll | 정규 표현식을 사용하여 패턴에 맞는 부분 교체 |
O | "abc123".replaceAll("[0-9]", ""); |
최종정리
- **replaceAll**은 문자열(String)의 정규 표현식 기반 교체 작업을 수행하는 메서드입니다.
- 공백 제거, 특정 문자 대체, 숫자 제거 등 다양한 작업에 사용됩니다.
- 원본 문자열은 변경되지 않으며, 교체된 새 문자열이 반환됩니다.
'코드 알고리즘' 카테고리의 다른 글
[프로그래머스 코딩 기초 트레이닝] 문자열 돌리기 (0) | 2025.01.02 |
---|---|
[프로그래머스 코딩 기초 트레이닝] 대소문자 바꿔서 출력하기 (0) | 2025.01.02 |
[PCCE 기출문제] 4번 / 병과분류 (1) | 2025.01.02 |
<코드카타> - 내적구하기 (0) | 2024.08.20 |
<코드카타> - 핸드폰 번호 가리기 (0) | 2024.08.16 |