본문 바로가기
알고리즘/백준

[백준/자바] 11720 숫자의 합

by Renechoi 2022. 11. 1.

[백준/자바] 11720 숫자의 합 

 

 

📌 문제 

N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.

 

 

⚔ 입력

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

 

 

📣 출력

입력으로 주어진 숫자 N개의 합을 출력한다.

 

 

 

 


풀이 참고 : Do it! 알고리즘 코딩테스트 - 자바 편

 

 

💎 문제분석하기

 

입력값이 얼마나 클지 알 수 없다. 따라서 int, long과 같은 숫자형으로 담을 수 없다.

먼저 문자열 형태로 입력값을 받는다. 이를 개별적으로 바꾸고, 다시 숫자형으로 변환해 더한다.

예를 들어 => "1234" => '1', '2', '3', '4' => 1 + 2 + 3 + 4 

 

 

 

📜 슈도코드 작성하기 

 

N값 입력받기

길이 N의 숫자를 String형 sNum에 저장하기

sNum을 다시 char []형 변수 cNum에 저장하기

int형 변수 sum 선언

for => cNum 길이 만큼 반복문 형성 {

배열의 각 자릿값을 정수형으로 변환하여 sum

}

sum 출력 

 

 

 

💡 코드 구현하기

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {

		System.out.println("start! ");
		Scanner scanner = new Scanner(System.in);
		int N = scanner.nextInt();
		String stringNumber = scanner.next();
		char[] characterNumber = stringNumber.toCharArray();

		int sum = 0;
		for (char c : characterNumber) {
			sum += c - '0';
		}
		System.out.println(sum);
	}

}

 

 

 

여기서 주의해야 하는 점은

 

1. next()의 사용 

=> 입력이 2줄로 되기 때문에 nextline()으로 읽으면 앞의 \n 이 같이 읽히는 문제가 발생한다. 

 

자바 입출력에서 next의 사용을 잘 이해할 필요가 있다. 

 

.next()  : XX_공백 
즉, "알고리즘코딩"을 입력하면 ("알고리즘코딩") 이라는 하나의 데이터로 인식하며 
"알고리즘 코딩"을 입력하면 ("알고리즘", "코딩")이라는 두 개의 데이터로 인식한다. 

따라서 스페이스바가 포함된 입력값들을 받을 때 사용한다. 

반면,
.nextline() : XX_엔터
즉, "알고리즘 코딩"을 입력해도 스페이스를 무시하며 하나의 데이터로 인식하고
"알고리즘
코딩"
으로 입력하면 비로소 ("알고리즘", "코딩")으로 인식한다. 

 

2. 아스키코드 값으로 숫자를 반환하는 방식

=> - '0' 

=> 같은 의미의 문자와 숫자의 코드 값 차이는 48이다. 즉, 문자 '1'은 아스키코드 값이 49이다. 따라서 문자 '1'을 숫자로 1로 변환하는 방법으로 '1' - 48 혹은 '1' -'0'과 같이 할 수 있다. 

 

 

 

 

 

 

 

 


반응형