본문 바로가기
스터디일지/JAVA

[2023.07.25] BufferReader / InputStreamReader / StringBuilder

by 똥쟁이핑크 2023. 7. 25.

https://teresa88.tistory.com/42

 

[자바] 1110번 더하기 사이클

https://www.acmicpc.net/problem/1110 1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자

teresa88.tistory.com

https://teresa88.tistory.com/41

 

[자바] 1929번 소수 구하기

https://www.acmicpc.net/problem/1929 1929번: 소수 구하기 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. www.acmicpc.n

teresa88.tistory.com

https://teresa88.tistory.com/40

 

[자바] 10250번 ACM 호텔

https://www.acmicpc.net/problem/10250 10250번: ACM 호텔 프로그램은 표준 입력에서 입력 데이터를 받는다. 프로그램의 입력은 T 개의 테스트 데이터로 이루어져 있는데 T 는 입력의 맨 첫 줄에 주어진다. 각

teresa88.tistory.com

https://teresa88.tistory.com/39

 

[자바] 1011번 Fly me to the Alpha Centauri

https://www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내

teresa88.tistory.com

 

 

오늘 위의 4가지 문제를 풀면서 정리가 필요하다고 생각한 함수들을 정리하려 한다.

 

1. BufferReader

  • Buffer를 사용한 읽기 함수이다.
  • Buffer는 Scanner와는 달리 입력받은 값을 저장했다가 buffer가 가득 차거나 행문자가 나타나면 그 내용을 한번에 전송해 준다.
  • 전송해야 하는 양이 많아지면 Scanner를 쓰는 것보다 훨씬 빨라진다.
  • 기본 타입은 String이며 int를 사용해야 할 경우는 형변환을 해주어야 한다.
  • 엔터만 경계로 인식한다. 따라서 띄어쓰기가 있는 경우는 데이터 가공을 해주어야 한다. → StringTokenizer
  • import java.io.BufferedReader로 import 해야지 쓸 수 있다.

소수 구하기 문제에서 썼던 코드 중 일부분이다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        StringBuilder sb = new StringBuilder();

참고한 사이트

https://terianp.tistory.com/19

 

Java 입출력(I/O), 스트림(Stream), 버퍼(Buffer) 개념 및 사용법

최근 백준에서 문제를 풀다가 Buffer 와 관련한 문제를 마주치게 되었다. 사실 지금까지 Buffer에 대해서 정말 하나도 몰랐고, Scanner 만 사용하여 입력받고 println 을 통해 출력하기만 했었던지라 이

terianp.tistory.com

https://rlakuku-program.tistory.com/33

 

[Java] 빠른 입출력을 위한 BufferedReader, BufferedWriter, StringTokenizer, StringBuilder

BufferedReader / BufferedWriter BufferedReader와 BufferdWriter는 버퍼를 사용하여 읽기와 쓰기를 하는 함수이다. 버퍼를 사용하지 않는 입력은, 키보드의 입력이 키를 누르는 즉시 바로 프로그램에 전달된다.

rlakuku-program.tistory.com

 

2. InputStreamReader

  • 입 / 출력 방법 중 하나이다.
  • InputStream은 컴퓨터와 키보드를 연결하여 입력받는 역할 / OutputStream은 모니터로 출력하는 역할
  • InputStream은 1개의 값을 받아 올 수 있지만 InputStreamReader를 사용하면 2개 이상의 값을 받아 올 수 있다.
  • 2개 이상의 값을 받아 올때는 배열로 받아와야 한다.
  • 고정적인 값을 받아 온다.
  • char배열 형태로 읽을 수 있다.
  • 문자열 출력이 가능하다.
  • Byte단위로 읽는 InputStream을 통해 입력 받고 문자 단위로 변환시키는 중개자 역할
  • InputStream의 단점을 보완했다.

https://blog.kakaocdn.net/dn/A9cWo/btqCgm082Xq/LpOd0mnD7shLQkotILFDU0/img.png

 

참고한 사이트

https://silverji.tistory.com/36

 

InputStreamReader 와 OutputStreamReader

알고리즘을 풀며 Buffer를 사용하다보니, InputStream / OutputStream 을 쓰는 형태가 대부분이다. 이 둘에 대해서 조금 더 자세히 알아보자. 설명 InputStream / OutputStream 은 자바에서 가장 기본이 되는 입 /

silverji.tistory.com

https://terianp.tistory.com/19

 

Java 입출력(I/O), 스트림(Stream), 버퍼(Buffer) 개념 및 사용법

최근 백준에서 문제를 풀다가 Buffer 와 관련한 문제를 마주치게 되었다. 사실 지금까지 Buffer에 대해서 정말 하나도 몰랐고, Scanner 만 사용하여 입력받고 println 을 통해 출력하기만 했었던지라 이

terianp.tistory.com

https://whitepro.tistory.com/591

 

자바 입력 : InputStream, InputStreamReader, BufferedStream, Scanner

자바의 기본 입력 API인 InputStream 등에 대해서 학습한다. 참조1의 설명이 잘 나와있어서, 그대로 따라해보며 기록 하였다. 1. Stream Stream은 마치 물이 연속적으로 흐르는 것과 같이 데이터가 연속적

whitepro.tistory.com

 

3. StringBuilder

  • String 문자열은 변경 불가능 / StringBuilder는 변경 가능한 문자열을 만들어 준다.
  • 문자열의 추가, 삭제, 수정이 빈번할 경우 사용해야 한다.
  • 문자열 연결 시 사용된다.
  • append()로 연결할 문자열을 넣어 객체를 호출한다.
  • 출력시와 변수에 집어 넣을때 toString()을 붙여야한다.

 

소수구하기 문제 코드 일부분

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        StringBuilder sb = new StringBuilder();

        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());

        for(int i = a; i <= b; i++){
            if(arr[i] != 0){
                sb.append(i + "\n");
            }
        }
        System.out.println(sb);
    }
}

 

 

참고한 사이트

https://onlyfor-me-blog.tistory.com/317

 

[JAVA] StringBuilder란? StringBuilder 사용법

자바에서 문자열하면 String을 대개 많이 떠올리고 사용할 것이다. 그런데 이 문자열이 1개 이상 있어서 이것들을 더해야 한다고 하면 어떤 방법을 쓸 수 있을까? 간단하게는 이 방법을 쓸 수 있을

onlyfor-me-blog.tistory.com

https://rlakuku-program.tistory.com/33

 

[Java] 빠른 입출력을 위한 BufferedReader, BufferedWriter, StringTokenizer, StringBuilder

BufferedReader / BufferedWriter BufferedReader와 BufferdWriter는 버퍼를 사용하여 읽기와 쓰기를 하는 함수이다. 버퍼를 사용하지 않는 입력은, 키보드의 입력이 키를 누르는 즉시 바로 프로그램에 전달된다.

rlakuku-program.tistory.com