함정이 있다. 예제 입력 3은 25자리를 더한다
여기서 자료형의 범위를 살펴보자면,
엥 근데 long은 19자리까지만 있는디?
배열을 사용해서 풀 수도 있다. 하지만 여긴 문자열 파트이다. 문자열을 활용해보도록 하자
package 백준;// @ author ninaaano
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class b_11720 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int sum = 0;
for(int i=0; i<n; i++){
sum += br.read()-'0';
}
System.out.println(sum);
}
}
우선 자릿수를 입력받을 n을 선언해준다.
그 후 read()로 한자리씩 끊어준다.
readLine은 한줄을 읽어들이지만 read는 한자리씩 아스키코드로 읽기때문에
뒤에 '0'이나 48을 빼줘야한다.
sum에 읽은 수를 모조리 더해 준 후 출력해주면 된다.
처음엔 한자리씩 어떻게 끊어야할까 생각을 했는데
다른 풀이를 보니 byte[] 에 넣기도 한다.
역시 풀이법은 다양하다
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
br.readLine(); // N 은 쓸모가 없으므로 입력만 받는다.
int sum = 0;
for(byte value : br.readLine().getBytes()) {
sum += (value - '0'); // 또는 (a-48)
}
System.out.print(sum);
}
}
출처 : st-lab
오.. int n을 선언하지 않고도 readLine()만 선언해서 받을 수도 있다
하나 또 배웠다.