hahn

[백준 - JAVA] 이진수 덧셈 본문

코딩테스트 연습/백준(JAVA)

[백준 - JAVA] 이진수 덧셈

hahn 2021. 9. 15. 14:07
728x90
반응형

1252번: 이진수 덧셈 (acmicpc.net)

 

1252번: 이진수 덧셈

첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 각 이진수는 1 또는 0으로만 이루어져 있으며, 0으로 시작할 수도 있다. 또한 각 이진수의 길이는 80을 넘지 않는다.

www.acmicpc.net

http://boj.kr/1a9844e8e67940a09d401d58dcb1e2ed

 

공유 소스 보기

 

www.acmicpc.net

더보기
import java.util.Scanner;

class Main{
    
    public static void main(String[] args){
        
        Scanner sc = new Scanner(System.in);
		
		String num1, num2, result = "", store;
		
		int pardon;
		
		boolean overflow = false;
		
		num1 = sc.next();
		num2 = sc.next();
		
		if(num1.indexOf("1") != -1) {
			num1 = num1.substring(num1.indexOf("1"));
		}else{
            num1 = "0";
        }
		if(num2.indexOf("1") != -1) {
			num2 = num2.substring(num2.indexOf("1"));
		}else{
            num2 = "0";
        }
        
        store = num1;
		
		if(num1.length() < num2.length()) {
			
			num1 = num2;
			num2 = store;
			
		}
		
		for(int i = num1.length() - 1; i > -1; i--) {
			
			if(num2.length() - (num1.length() - i) > -1) {
				
				pardon = (int) num1.charAt(i) + (int) num2.charAt(num2.length() - (num1.length() - i)) - 96;
				
			}else {
				
				pardon = (int) num1.charAt(i) - 48;
				
			}
			
			if(overflow) {
				pardon++;
				overflow = false;
			}
			
			if(pardon == 2) {
				
				overflow = true;
				pardon = 0;
				
			}
            
            if(pardon == 3) {
				
				overflow = true;
				pardon = 1;
				
			}
			
				result = String.valueOf(pardon) + result;
			
		}
		
		if(overflow) result = "1" + result;
		
		System.out.println(result);
        
    }
    
}

 

입력받는 값이 0부터 시작하는 것과

 

overflow 조건 2, 3 분기 처리와

 

1이 없는 문자열이 들어왔을 때 처리하는 것을

 

제대로 하지 못했다

 

아무래도 n진수 연산에 많이 약한 듯..

728x90
반응형

'코딩테스트 연습 > 백준(JAVA)' 카테고리의 다른 글

[백준 - JAVA] 핸드폰 요금  (0) 2021.09.15
[백준 - JAVA] 모음의 개수  (0) 2021.09.15
[백준 - JAVA] 부호  (0) 2021.09.15
[백준 - JAVA] 성지키기  (0) 2021.09.15
[백준 - JAVA] 이상한 곱셈  (0) 2021.09.15