[백준/자바] 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'과 같이 할 수 있다.
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준/자바] 10986 나머지 합 구하기 (0) | 2022.11.03 |
---|---|
[백준/자바] 11660 구간 합 구하기 5 (0) | 2022.11.02 |
[백준/자바] 11659 구간 합 구하기 4 (0) | 2022.11.02 |
[백준/자바] 1546 평균 구하기 (0) | 2022.11.02 |
백준 JAVA 문제 풀 때 유용한 템플릿 (by 류호석님) (0) | 2022.11.01 |