상세 컨텐츠

본문 제목

[백준 Java]15552번 코드 분석

백준 자바

by 빙하둘리 2022. 12. 19. 00:37

본문

728x90

코드 원본 // 주석은 일단 지우고 아래에서 설명

import java.io.*;
import java.util.StringTokenizer;

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

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 

        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        //T는 테스트 케이스의 수
        int T=Integer.parseInt(br.readLine());

        StringTokenizer st;
        int sum;
        for(int i=0; i<T; i++) {
            String s = br.readLine();
            st= new StringTokenizer(s);

        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        sum=a+b;
 
        bw.write(String.valueOf(a+b));
        if(i!=T-1)
        	bw.write("\n");

        }

        bw.flush();
        bw.close();
    }
}

 

[코드 설명]

버퍼를 이용해서 읽는 함수

BufferedReader br=new BufferedReader(new InputStreamReader(System.in);

System.in으로 콘솔에서 데이터를 입력을 받는다.

InputStream 객체로는 1byte만 읽을 수 있기에 InputStreamReader를 사용하게 된다.

 

버퍼를 이용해서 쓰는 함수

BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));

 

T는 테스트 케이스 개수

int T = Integer.parseInt(br.readLine());

pareseInt 함수는 Integer 클래스의 static 함수

parseInt는 문자열을 숫자로 변형시키는 함수다.

 

문자열 받고 공백으로 분리하기(StringTokenizer 클래스 이용)

StringTokenizer st;
String s = br.readLine();
st=new StringTokenizer(s);

 

A,B를 공백을 기준으로 분리하기 위해 StringTokenizer를 사용한다.

readLine()이라는 메서드로 String(문자열) type의 문자를 읽어들인다.

다음과 같이 한번에 쓸 수 있다.

StringTokenizer st = new StringTokenizer(br.readLine());

전체적인 원리는 StringTokenizer를 이용해서 문자열을 공백으로 나눠주기 위해서 StringTokenizer 생성자에 br.readLine()으로 받은 문자열을 넣어준다.

 

공백으로 분리한 token 받기(StringTokenizer 클래스의 nextToken() 함수)

nextToken함수를 이용한다. 사용방법은 인스턴스명.nextToken();

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

 

숫자를 String형으로 반환하기(valueOf 함수 사용)

bw.write(a+b);는 문자열로 형 변환한 것이 아니어서 오류

valueOf 함수를 이용한다. 다음과 같이 사용한다.

bw.write(String.valueOf(check[i]));

 

버퍼 flush와 close 해주기

bw.flush();
bw.close();

 

[참고자료]

Integer 클래스의 parseInt 함수

https://ninearies.tistory.com/172

 

[JAVA] Integer.parseInt()

parse의 종류 int 뿐만 아니라 byte, short, long, float, double 등 숫자와 관련된 타입은 전부 가능함 parseByte() / parseShort() / parseInt() / parseLong() / parseFloat() / parseDouble() () 안에는 문자열 타입의 숫자를 넣어

ninearies.tistory.com

 

728x90

관련글 더보기

댓글 영역