본문 바로가기
코드 알고리즘

[프로그래머스 코딩 기초 트레이닝] 문자열 붙여서 출력하기

by 수바니 2025. 1. 2.

나의답안

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(" ", ""));
    }
}

다른사람의 답안을 보니 공백이 많은 문자열들은 이렇게 처리하는 것도 좋은 방법이라는 생각이 들었습니다..!

제 코드는 너무나 단순하고 .. 다들 생각할 수 있는 ..^^

 

코드 실행 흐름

  1. BufferedReader 생성:
    • BufferedReader 객체 br이 생성되어 사용자 입력을 처리합니다.
    • System.in은 콘솔 입력을 받을 수 있는 기본 입력 스트림입니다.
  2. br.readLine() 호출:
    • 콘솔에서 한 줄의 입력을 읽습니다.
    • 읽은 데이터는 문자열로 반환됩니다.
  3. replaceAll(" ", "") 처리:
    • 입력된 문자열의 모든 공백을 제거합니다.
    • 정규 표현식 " "는 공백 문자 한 칸을 의미하며, 빈 문자열 ""로 대체합니다.
  4. 출력:
    • 공백이 제거된 문자열을 출력합니다.

코드 주요 포인트

  1. 공백 제거:
    • replaceAll(" ", "")는 공백을 제거하기 위한 방식으로 적합합니다.
    • 필요에 따라 정규 표현식을 확장할 수도 있습니다.
  2. 효율성:
    • BufferedReader는 대량의 입력을 처리할 때 빠르게 작동합니다.
  3. 예외 처리:
    • 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

 

주의할 점 

 

  1. 정규 표현식 사용
    • 첫 번째 매개변수는 단순 문자열이 아니라 정규 표현식으로 동작합니다.
    • 만약 단순한 문자열을 교체하려면 replace() 메서드를 사용하는 것이 더 적합합니다.
  2. 원본 문자열 변경 X
    • String은 불변 객체(immutable)입니다. 따라서 replaceAll은 원본 문자열을 수정하지 않고, 수정된 새 문자열을 반환합니다.

replaceAll  vs replace

메서드 용도 정규표현식 지원 예시
replace 단순한 특정 문자열을 다른 문자열로 교체 X "abc".replace("a", "x");
replaceAll 정규 표현식을 사용하여 패턴에
맞는 부분 교체
O "abc123".replaceAll("[0-9]", "");

 

 


최종정리

 

  • **replaceAll**은 문자열(String)의 정규 표현식 기반 교체 작업을 수행하는 메서드입니다.
  • 공백 제거, 특정 문자 대체, 숫자 제거 등 다양한 작업에 사용됩니다.
  • 원본 문자열은 변경되지 않으며, 교체된 새 문자열이 반환됩니다.