1252 이진수 덧셈[java]

지구온난화·2023년 3월 5일
0

백준 브론즈

목록 보기
4/52

코드

String s = br.readLine();
		StringTokenizer st = new StringTokenizer(s);
		String A = st.nextToken();  //이진수1
		String B = st.nextToken();  //이진수2
		String answer = "";  //정답
		
		
		int a = A.length()-1, b = B.length()-1;
		int x = 0; //올림수
		int ca, cb; 
		while(true) {
			if(a < 0) ca = 0;  //범위를 넘어가면 0으로 계산
			else ca = A.charAt(a)-48; //맨 뒤의 자리부터 계산
			if(b < 0) cb = 0;
			else cb = B.charAt(b)-48;

			int k = ca + cb + x;	
			if(k == 0) {
				answer += "0";
				x = 0;
			}
			else if(k == 1) {
				answer += "1";
				x = 0;
			}
			else if(k == 2) {
				answer += "0";
				x = 1;
			}
			else if(k == 3) {
				answer += "1";
				x = 1;
			}
			a--; b--;
			
			if(a < 0 && b < 0 && x == 0) break;  //이진수 A와 B 모두 계산이 끝나고 올림수 또한 없을 때 while문 빠져나오기
		}
	
		StringBuilder sb = new StringBuilder(answer);
		answer = sb.reverse().toString(); 
		int i = 0;  //맨 앞자리의 0은 제거...단 최종 값이 0이 아닐 경우에만
		while(answer.length() != 1 && answer.charAt(i) == '0') {
			if(answer.charAt(i) == '0') {
				answer = answer.substring(1);
			}
		}
		System.out.println(answer);

2023-03-05

0개의 댓글