본문 바로가기
Algorithm/Baekjoon

[백준] 1000번 : A + B - Java

by unknownomad 2021. 12. 21.

https://www.acmicpc.net/problem/1000

 

1000번: A+B

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net



주의점

  • 입력이 공백 단위로 주어짐

입력 방식

1. Scanner

  • 가장 기본적인 입력 방식
  • in.next(): 문자열 입력 시 공백 전까지만 받음(에러나는 경우 多)
  • in.nextLine(): 문자열 입력 시 Enter 입력 전까지만 받음(사용 권장)

 

2. BufferedReader

  • Scanner 입력 방식보다 훨씬 빠른 성능

2.1. 문자열 받는 대표적인 방법

  • read():  한 문자만 읽어오기
  • readLine(): 한 행 읽어오기(사용 권장)
    ➡ readLine()은 한 행을 전부 읽기에 공백 단위로 입력해준 문자열을 다시 공백 단위로 분리해줘야 함

2.2. 문자열 분리 방법

2.2.1. StringTokenizer 클래스

  • split()보다 성능 좋음(단순 규칙으로 문자열 분리하거나 데이터가 더 많아질 때 추천)

2.2.2. split()

  • StringTokenizer 클래스와 split() 모두 문자열을 반환하기에 자료형 타입 확인 후 형변환 유의하기
  • double형으로 풀면 나머지가 정수로 나와도 소수점까지 같이 출력되어 오답으로 처리됨

풀이

1. Scanner

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
    
        Scanner in = new Scanner(System.in); //객체 생성
        //여기서의 System.in: 입력한 값을 Byte 단위로 읽는다는 의미
        
        int A = in.nextInt();
        int B = in.nextInt();
        System.out.println(A + B);
        
        in.close(); //필수는 아니나, close()해줘야 리소스 누수 방지함
               
        //1. Primitive Type
        //Boolean Type
        //true, false 외의 문자나 숫자 입력 시 에러
        boolean 불리언 = in.nextBoolean();
        
        //Numeric Type
        //Integer Type
        byte 바이트 = in.nextByte();
        short 쇼트 = in.nextShort();
        //int 자료형 범위 벗어나거나 문자 입력 시 에러
        int 정수 = in.nextInt();
        long 롱 = in.nextLong();
        
        //Floating Point Type
        double 더블 = in.nextDouble();
        float 플롯 = in.nextFloat();
        
        //2. Reference Type
        //String
        String 문자열_space = in.next();
        String 문자열_enter = in.nextLine();
    }
}

 

2. BufferedReader

2.1. StringTokenizer 클래스

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

public class Main {
    public static void main(String[] args) throws IOException {
		
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
        //1. String 변수 생성
        String str = br.readLine();
        //StringTokenizer("문자열", 구분자);
        StringTokenizer st = new StringTokenizer(str, " ");
		
        //2. String 변수 없이 입력과 동시에 구분자로 분리
        StringTokenizer st1 = new StringTokenizer(br.readLine(), " ");
		
        //nextToken(): 구분된 변수 꺼낼 때 문자열 반환해줌
        //이때 문자열 반환됨과 동시에 해당 객체에서 사라짐
        //Integer.parseInt(): 문자열 반환했으니 int 형으로 변환
        int A = Integer.parseInt(st.nextToken());
        int B = Integer.parseInt(st.nextToken());
		
        System.out.println(A + B);
    }
}

 

2.2. split()

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));
		
        //readLine() 통해 읽어와 ➡ split(" ")으로 공백 단위로 분리
        String[] str = br.readLine().split(" ");
        
        //String 배열에 각각 저장
        int A = Integer.parseInt(str[0]);
        int B = Integer.parseInt(str[1]);
		
        System.out.println(A + B);
	}
}

성능

  1. BufferedReader + StringTokenizer
  2. BufferedReader + split()
  3. Scanner

 


출처 : https://st-lab.tistory.com/12

'Algorithm > Baekjoon' 카테고리의 다른 글

[백준] 10998번 : A x B - Java  (0) 2021.12.23
[백준] 1001번 : A - B - Java  (0) 2021.12.22
[백준] 10172번 : Dogs - Java  (0) 2021.12.20
[백준] 10171번 : Cats - Java  (0) 2021.12.16
[백준] 10718번 : We love kriii - Java  (0) 2021.12.15

댓글