새로운 시작
722
2021-06-02 19:41:14
2
103

백준1단계 11720번 숫자의 합 좀 여쭤봐도 될까요?ㅠㅠ


문제

N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

출력

입력으로 주어진 숫자 N개의 합을 출력한다.




이거 구글링 하면 모든 거의 대부분 사람들 풀이가

문자열로 받아 char로 바꾼후 그걸 int로 바꾸던가

char로 바꾼뒤 아스키 코드를 빼서 숫자로 만들어 계산 이건데요..


왜 

이걸 숫자로 받아서 몫과 나머지를 이용해서 더하는 건 안되나요?ㅠㅠ


share가 몫이고 sum은 합계, num은 그 숫자를 뜻한다면

public class Main {


public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

//숫자 개수

int N = sc.nextInt();

int num = sc.nextInt();

int sum=0;

int share=0;


sc.close();

for(int i=0; i < N-1; i++) {

share = num / 10;

sum += num % 10;

num = share;

}

sum += num;

System.out.println(sum);


}


}


이렇게 해도 값이 나오는데 백준에서 돌려보면 런타임 오류가 나네요..

뭣이 문제인지...ㅠㅠ


0
  • 답변 2

  • rezigrene
    1k
    2021-06-02 20:18:23
    값이 나오는지는 어떻게 확인하셨나요?
     N=30 정도만 되어도 문제생길듯한데..

    원인은 int 자료형이 표현가능한 숫자의 범위를 알아보시면 됩니다.
  • 새로운 시작
    722
    2021-06-03 02:16:26

     

    rezigrene   앗 저는 몇개 넣어보고 답이 맞다고 생각했습니다.범위가 있었군요.. 가르쳐 주셔서 감사합니다.!

  • 로그인을 하시면 답변을 등록할 수 있습니다.