백준: #15873 - 공백 없는 A+B [Solved] | Bronze IV

#15873 - 공백 없는 A+B

Java 16 (Solved)

Status page

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String input = sc.nextLine();
		int[] array = new int[input.length()];
		int sum = 0;
		
		for(int i = 0; i < array.length; i++) {
			array[i] = input.charAt(i) - 48;
			if(array[i] == 0) {
				array[i-1] *= 10;
			}
		}
		
		for(int i = 0; i < array.length; i++) {
			sum += array[i];
		}
		
		System.out.println(sum);
	}
}


오랜만에 질문 올리네요.
간단한 덧셈인데, 이번엔 띄어쓰기가 없다고 합니다. 입력은 각각 10 이하로만 나온다고 해요.
37이 입력되면 3 + 7이니까 10, 102면 10 + 2니까 12…
대충 원리는 알았으니 이제 알고리즘으로 구현해야 하는데, 어떻게 구현할지가 문제입니다. 나눗셈으로 해볼려니 좀 빡세더라고여.
숫자대신 문자열로 저장해서 0 바로 앞 글자랑 묶어서 parse 해야하나요?

102 -> ‘1’ ‘0’ ‘2’ -> “10” ‘2’ -> 10 + 2?

만약 이렇게 된다면, Java로는 어떤 클래스/메소드를 이용해서 구현할 수 있는지 궁금합니다.

입력제약에서 부터 유추할 수 있는 어떻게 나눠야하는지 조건이 있어여, 조건을 생각해보시구요 :slight_smile:

문자열 나누는건 substring이나 split을 사용하시면되구요.
형변환하는건 말씀하신대로 Integer.parseInt하시면되겠쭁?

1 Like

코드가 좀 이상하게 된 것 같은데 아무튼 해결되었읍니다. 제 생각과는 달리 split이나 parseInt가 필요 없었나봅니다.

이제보니 조금만 더 생각했으면 해결할 수 있었던 문제였네요. 다음부턴 질문글 신중히 올리겠습니다.

#include <cstdio>

auto main() -> int {
    int s; std::scanf("%d", &s);
    std::printf("%d",s/100?(s==1010?20:(s%10?10+s%10:10+s/100)):s/10+s%10);
    return 0;
}