문제
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
생각보다 더 많이 틀렸던 문제
3번 세번째 시도에 정답코드 있습니다.
1. 첫번째 시도 : 10으로 나눠서 숫자의 합(오답)
package test;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 첫줄 숫자 개수
int num = sc.nextInt();
int total=0;
while(num>0) {
total += num % 10;
num /= 10;
}
System.out.printf("%d", total);
}
}
틀린 이유 :
25
7000000000000000000000000
입력시 런타임 에러 발생
2. 두번째 시도 : 정수로 입력 받아서 문자열로 변경, 문자열을 쪼개서 배열로 저장 (오답)
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 첫줄 숫자 개수
int num = sc.nextInt();
String str = String.valueOf(num); // 정수를 문자열로 변경
char[] charArray = str.toCharArray(); // 문자열을 쪼개서 배열로 저장
int sum=0;
for(int i=0; i<charArray.length; i++){
sum += charArray[i] - '0'; // 아스키 코드 '0' = 48, 0(48) - 0(48) = 0
}
System.out.printf("%d", sum);
}
}
틀린 이유 :
25
7000000000000000000000000
입력시 런타임 에러 발생
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 첫줄 숫자 개수
String num = sc.next();
sc.close();
int sum=0;
for(int i=0; i<N; i++){
sum += num.charAt(i) - '0'; // 아스키 코드 '0' = 48, 0(48) - 0(48) = 0
}
System.out.printf("%d", sum);
}
}
- Java의 문자열은 기본적으로 크기 제한이 없어서 메모리가 허용하는 한 아주 큰 문자열을 처리할 수 있다. (chatGPT)
- 하여 String 클래스를 사용하여 동적으로 크기를 조절
- 25 / 7000000000000000000000000 입력시에도 연산 가능
주의) 대용량 데이터를 처리할 때는 메모리 관리 고려 중요
교훈 : 문제에 주어진 입력을 반드시 모두 넣어봐야겠다.
'백준 > 브론즈 탈출하기' 카테고리의 다른 글
[Java] 백준 25083번 : 새싹 (0) | 2023.11.02 |
---|---|
[Java] 백준 2562번 : 최댓값 (0) | 2023.10.31 |
[Java] 백준 10818번 : 최소, 최대 (0) | 2023.10.29 |
[Java] 백준 5597번 : 과제 안내신 분..? (0) | 2023.10.22 |
[Java] 백준 10807번 : 개수 세기 (0) | 2023.10.14 |