본문 바로가기
코딩테스트

백준 11720번 숫자의 합

by dyddyd0 2024. 6. 19.

BufferdReader, BufferdWriter에 익숙해지고자, 연습을 위해 사용했다.

 

 

 

첫 제출은 다음과 같이 시도했다.

public class BOJ_11720 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());
        int input = Integer.parseInt(br.readLine());
        int sum = 0;
        for(int i = 0; i < n; i++){
            sum += input % 10;
            input /= 10;
        }
         bw.write(String.valueOf(sum));
        bw.flush();
        bw.close();
        br.close();
    }
}

 

결과는 런타임 에러..

 

 

오류를 읽어보니
혹시 범위 때문에 Long으로 받아야 되나? 해서 input을 Long 값으로 바꾸었지만,

런타임 에러가 났다.

public class BOJ_11720 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int n = Integer.parseInt(br.readLine());
        long input = Long.parseLong(br.readLine());
        long sum = 0;
        for(int i = 0; i < n; i++){
            sum += input % 10;
            input /= 10;
        }
         bw.write(String.valueOf(sum));
        bw.flush();
        bw.close();
        br.close();
    }
}

 

 

이후 다 Long으로 냅다 때려 박았고, 오류는 해결되지 않았다.

(에러)

public class BOJ_11720 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        long n = Long.parseLong(br.readLine());
        long input = Long.parseLong(br.readLine());
        long sum = 0;
        for(long i = 0; i < n; i++){
            sum += input % 10;
            input /= 10;
        }
         bw.write(String.valueOf(sum));
        bw.flush();
        bw.close();
        br.close();
    }
}

 

 

오류의 원인을 정확히 몰라서 그냥 string으로 받아서 처리하도록 수정해 주었다.

제출 성공.

입력의 최대값은 100자리의 수 이다 : 999...(9가 총 100개)..999
100자리의 수는 기본 자료형( int(10의 9승),  long(10의 18승) )으로 받을 수 없다.

public class BOJ_11720 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String n = br.readLine();
        String input = br.readLine();
        int sum = 0;
        for(int i = 0; i < Integer.parseInt(n); i++){
            sum += input.charAt(i)-'0';
        }
        bw.write(String.valueOf(sum));
        bw.flush();
        bw.close();
        br.close();
    }
}

 

 

=> 생각을 잘못했다.. long 자료형의 범위는 최대 19자리라서 당연히 100자리 수를 넣을 수 없는데..

반응형

'코딩테스트' 카테고리의 다른 글

프로그래머스 문자열 잘라서 정렬하기  (1) 2024.08.31
백준 10845번 큐  (0) 2024.07.05
백준 10828번 스택  (0) 2024.06.30