본문 바로가기

코딩 테스트

[코딩테스트] 백준 1001번: A-B (Java)

# 문제

 

# 코드

  • Scanner, BufferedReader+InputStreamReader 사용

▼ Scanner 사용

import java.util.Scanner;

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

    Scanner sc = new Scanner(System.in);

    // System.out.println("첫 번째 값 입력: ");
    int A = sc.nextInt();

    // System.out.println("두 번째 값 입력: ");
    int B = sc.nextInt();

    int sum = A - B;
    System.out.println(sum);

    sc.close();
  }
}

 

▼ BufferedReader + InputStreamReader 사용 - 1

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));
    
    int A = Integer.parseInt(br.readLine());
    int B = Integer.parseInt(br.readLine());

    int sum = A - B;

    System.out.println(sum);
  }
}

 

▼ BufferedReader + InputStreamReader 사용 - 2

* 백준에 제출할 때에는 BufferedReader로 입력받은 값을 공백 기준으로 나누어서 각 값을 String타입의 배열에 담은 다음 숫자로 형변환 시켜서 출력

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));

    String[] strs = br.readLine().split(" ");

    int A = Integer.parseInt(strs[0]);
    int B = Integer.parseInt(strs[1]);

    int sum = A - B;

    System.out.println(sum);
  }
  
}

 

# 입/출력 결과

Scanner 사용 했을 때, 입/출력 모습

 

BufferedReader + InputStreamReaer 사용 했을 때, 입/출력 모습 (1)

 

 BufferedReader + InputStreamReaer 사용 했을 때, 입/출력 모습 (2)

=> 백준에 제출하기 위해 .split() 사용한 거.

 

# 과정

  • 첫 번째는 Scanner 클래스로 문제를 풀었다.
    • 처음에 틀린 이유는 문제 풀이에 필요없는 소스 코드를 작성했더니 틀렸다는 말이 나왔다.
    • 틀린 이유:
      • System.out.println("두 수의 합은: " + sum); 이렇게 했더니 틀렸다.
    • 해경 방법:
      • System.out.println() 안에 쓸데없는 텍스트는 지우고 sum 만 입력하니 통과됐다.
  • 두 번째는 BufferedReader + InputStreamReader 클래스로 문제를 풀었다.
    • 어제 문제를 푼 A+B와 동일한 문제 발생.
    • 틀린 이유:
      • 자동으로 입력 받은 값이 한 줄로 입력되다 보니 문자열 형태로 저장되었다.
    • 해결 방법:
      • 자동으로 입력받은 값을 .split()를 사용하여 공백 기준으로 나눈 다음, 각각 값을 String타입의 배열로 저장하기.
      • 그 다음, 0번째, 1번째의 값을 각각 int타입의 A, B 변수에 형변환하여 저장 후 A-B 계산하여 출력.

 

# 느낀 점

  • 어제 푼 A + B와 같은 맥락이라서 복습 차원으로 문제를 풀었다.