JAVA/백준

[Java11] 11022번 : A+B -8

lavender1122 2024. 9. 11. 16:34

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

정답

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

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine());
        StringBuilder sb=new StringBuilder();
        for(int i =1; i<=t;i++){
            String str2 = br.readLine();
            sb.append("Case #").append(i).append(": ")
               .append(str2.charAt(0)).append(" + ")
               .append(str2.charAt(2)).append(" = ")
               .append((str2.charAt(0)-'0')+(str2.charAt(2)-'0'))
               .append('\n') ;
        }
        System.out.print(sb);
    }
}

풀이

  • A와 B의 범위는 1~9 사이
    ⇒ 무조건 한 자릿수만 입력 받기 때문에 문자열로 입력 받을시 공백이 들어가는 위치는 언제나 고정되어있다.

  • 그럼 문자열의 특정 위치의 문자를 반환해주는 charAt() 쓸 수 있다면 StringTokenzier 객체를 계속 생성하지 않아도 되기에 시간이 더욱 단축 될수 있다.
  • String.charAt() 해당 위치의 문자를 char 반환한다
  • 즉, 만약 0이라는 문자열이 반환되면 아스키 코드 값인 48이 반환된다.
    이를 int형으로 연산하려고 하거나 문자 출력이 아닌 정소로 출력하려 하면 0 이라는 숫자가 아닌 48로 출력된다.
  • 그래서 '6'을 숫자 6으로 바꾸고 싶으면 -'0' 해야된다.