📝 문제
❗ 주의
두 번째 줄에 숫자 N개가 공백없이 주어질때, int형이나 long으로 받을수가 없다.
왜냐하면 N이 1이상 100이하의 값을 가지기 때문에, 가질수 있는 범위를 초과한다.
(int, long형은 최대 21억까지 표현가능, 21억은 자릿수가 10개)
그러므로 문자열로 받은뒤, 숫자로 변환하는 것을 생각한다.
또한 문자열에서 char형 배열로 바꾼뒤, 바로 더하면 오류가 발생한다.
char형을 숫자값으로 변환시키는 과정이 필요하다.
🔑 풀이 과정
문자열로 숫자를 받은 뒤 char형 배열로 변환한다.
toCharArray() 메서드를 사용한다.
문자 '0'의 아스키코드는 48, 문자 '1'의 아스키코드는 49...
합계를 구할 때 배열의 각 요소에서 48('0')을 빼준다.
for문을 돌때는 배열의 크기만큼 돌아준다. length를 사용.
앞에서 받은 숫자 개수 n만큼 돌아도 정답처리.
🔓 답안
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
// 숫자 개수 N 입력받기
int n = sc.nextInt();
// 숫자 N개 입력받기
String s = sc.next();
// char형 배열로 변환시켜줌
char[] arr = s.toCharArray();
int sum = 0;
for(int i = 0; i < arr.length; i++){
// sum += (arr[i] - 48); // 동일 표현
sum += (arr[i] - '0');
}
System.out.println(sum);
sc.close();
}
}
'PS > Baekjoon' 카테고리의 다른 글
[Baekjoon] 2738 - 행렬 덧셈 (0) | 2022.11.11 |
---|---|
[Baekjoon] 11659 - 구간 합 구하기 4 (0) | 2022.11.10 |
[Baekjoon] 1546 - 평균 (0) | 2022.11.08 |
[Baekjoon] 5597 - 과제 안 내신 분..? (0) | 2022.11.07 |
[Baekjoon] 10926 - ??! (0) | 2022.11.05 |
댓글