elesis's haunt

10952 A+B - 5 본문

백준~문풀 후 최적화 추가~/단계별로 풀어보기

10952 A+B - 5

elesis 2021. 9. 13. 16:19

* BufferedReader, StringBuilder, StringTokenizer, 상수, 메소드체이닝, break;

import java.io.*;
import java.util.StringTokenizer;
 
public class Main {
	public static final String LINNER = "\n";

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st;
		StringBuilder sb = new StringBuilder();
		
		while(true) {
			st = new StringTokenizer(br.readLine()," ");
			int A = Integer.parseInt(st.nextToken());
			int B = Integer.parseInt(st.nextToken());
			
			if(A==0 && B==0) {
				break;
			}
			sb.append((A+B)).append(LINNER);
		}
		System.out.println(sb);
	}
}

 

 

비슷한 속도의 다른 로직

* BufferedReader, StringBuilder, CharAt, 메소드체이닝

 - StringTokenizer 을 계속 생성해줄 필요 없으니 성능 측면에서 좀 더 이점

 - 입력이  자리 수이니 공백의 위치는 고정이라는 점을 이용

 

import java.io.*;
 
public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		while(true) {
			String str = br.readLine();
			
			int A = str.charAt(0) - 48;
			int B = str.charAt(2) - 48;
            
			if(A==0 && B==0) {
				break;
			}
			sb.append((A+B)).append('\n');
		}
		System.out.println(sb);
	}
}

CharAt

 - char는 단 한 글자만 저장할 수 있는 변수인데 Scanner로 입력을 받을 때는 String 타입으로 밖에 받을 수 없다. 그런 상황에서 사용하기위해 나왔다.

 - charAt() 의 경우 문자(char)로 반환되기 때문에 반드시 -48 (또는 -'0') 을 해주어야 우리가 아는 정수의 형태가 나온다. char형 '1'은 int형으로 변환시 아스키코드 값 49로 변환된다. 여기서 int형 1이 필요하면 49에서 1이 되기 위해 48을 빼준다. '0'은 아스키코드 48 이므로 -48대신 -'0' 또한 가능하다.

     숫자1이 49           여기에 '0'인 48을 빼주면 1

     숫자2가 50                                            2

     숫자3이 51                                            3

     숫자4가 52                                            4

     숫자5가 53                                            5

'백준~문풀 후 최적화 추가~ > 단계별로 풀어보기' 카테고리의 다른 글

1110 더하기 사이클  (0) 2021.09.16
10951 A+B - 4  (0) 2021.09.14
10871 X보다 작은 수  (0) 2021.09.13
2439 별 찍기 - 2  (0) 2021.09.13
2438 별 찍기 - 1  (0) 2021.09.13
Comments