반응형
문제
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.
출력
입력으로 주어진 숫자 N개의 합을 출력한다.
예제 입력 1
1
1
예제 출력 1
1
예제 입력 2
5
54321
예제 출력 2
15
예제 입력 3
25
7000000000000000000000000
예제 출력 3
7
예제 입력 4
11
10987654321
예제 출력 4
46
내가 이 문제를 처음 봤을 때 가장 중요하게 생각했던 핵심포인트는 '긴 숫자를 어떻게 하나의 숫자로 인식하지 않고 1문자씩 끊어서 입력받는지'였다, 그렇기에 해당 풀이법으로 가장먼저 떠올랐던 건 처음에 입력받은 숫자를 문자열로 인식받아 charAt과 반복문을 활용하여 숫자를 하나의 문자로 입력받고 반복문을 순회할때 각각 int형으로 형변환 후, total 변수에 더하는 식의 로직이었기에 해당 방법으로 풀이를 진행하였다.
package BAEKJOON_11720;
/*
날짜 : 2024.07.16.화
내용 : 백준 11720번 문제 (숫자의 합)
*/
import java.util.*;
public class BAEKJOON_11720 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int total = 0; // 총합을 구하기 위한 변수선언
int n = sc.nextInt();
sc.nextLine(); // nextLine을 활용하여 \n 문자 제거하기
String str = sc.nextLine(); // 하나의 긴 숫자를 문자열로 입력받기
for (int i=0; i<n; i++) { // 반복문을 순회하며 1자리마다 char형으로 변환후 다시 int형으로 변환하여 total 변수에 더하기
total += (int)str.charAt(i);
}
System.out.println(total); // 각 자리의 숫자들을 더한 총합 출력
}
}
하지만 문자열을 Int형으로 형변환 하는 과정에서 아스키코드와 같은 형태로 변환되는 에러사항이 존재하였기에 이를 해결하기 위해 다른방법을 찾아보던 중 아스키 코드에서 0~9까지의 숫자는 모두 연속되어있고 0은 48, 1은 49, 2는 50 이런식으로 48부터 시작하여 57까지 연속되어 있다는 사실을 알게되었고, 숫자만 입력받는 로직이기에 -48을 해주면 0은0, 1은1, 2는2, 9는9로 대응되게 할 수 있어 해당 방법으로 코드를 고치게 되었다.
package BAEKJOON_11720;
/*
날짜 : 2024.07.16.화
내용 : 백준 11720번 문제 (숫자의 합)
*/
import java.util.*;
public class BAEKJOON_11720 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int total = 0; // 총합을 구하기 위한 변수선언
int n = sc.nextInt();
sc.nextLine(); // nextLine을 활용하여 \n 문자 제거하기
String str = sc.nextLine(); // 하나의 긴 숫자를 문자열로 입력받기
for (int i=0; i<n; i++) { // 반복문을 순회하며 1자리마다 char형으로 변환후 다시 int형으로 변환하여 total 변수에 더하기
total += (int)str.charAt(i) - 48;
}
System.out.println(total); // 각 자리의 숫자들을 더한 총합 출력
}
}
반응형
'실습 > 백준' 카테고리의 다른 글
문자열 반복 - 2675번 (Java 풀이) (0) | 2024.07.17 |
---|---|
알파벳 찾기 - 10809번 (Java 풀이) (0) | 2024.07.17 |
아스키 코드 - 11654번 (Java 풀이) (0) | 2024.07.16 |
문자열 - 9086번 (Java 풀이) (0) | 2024.07.15 |
단어 길이 재기 - 2743번 (Java 풀이) (0) | 2024.07.15 |