1. 문제
N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.
2. 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
String num = sc.next();
int sum=0;
for(int i=0;i<N;i++) {
sum+=num.charAt(i)-48;
}
System.out.println(sum);
sc.close();
}
}
3. 풀이
공백없이 숫자N개를 입력받는다? => 문자열로 입력받는다? 이런 생각의 흐름을 거쳤다
막상 문자열로 입력을 받고 보니, 문자열에서 하나씩 뽑아 숫자를 출력해야하는데 charAt은 해당문자의 아스키코드값을 반환하기 때문에 48을 빼주거나 '0'을 빼줘야 한다.
num에 123이 저장되어 있다는 가정하에 num.charAt(0)을 출력하면 1이 아닌, 49가 출력된다. 따라서 48을 빼주는 것이다. 48은 '0'의 아스키코드 값이기 때문에 48대신 '0'을 빼도 무방하다.
4. 링크
'Computer Science > 자료구조와 알고리즘' 카테고리의 다른 글
[알고리즘] 드모르간 법칙(De Morgan's law)이란? (0) | 2021.02.11 |
---|---|
[알고리즘] 최댓값 구하기 - java (0) | 2021.02.11 |
[JAVA] 백준 11654번 : 아스키 코드 (0) | 2021.02.03 |
[JAVA] 백준 1065번 : 한수 (0) | 2021.01.24 |
[JAVA] 백준 4673번 : 셀프넘버 (0) | 2021.01.22 |