Baekjoon:11720

aiden·2024년 1월 12일
0

JAVA Programming

목록 보기
2/3
post-custom-banner

https://www.acmicpc.net/problem/11720

이 문제의 경우, 조건과 입력 케이스를 잘 살피지 않아 발생한 실수라고 할 수 있겠다.
앞으로도 코테들을 볼 때 항상 조건이 포함되어 있을 텐데, 그 부분을 고려하지 않은 점에 대해 반성해야겠다.

정말 아무 생각 없이 다음과 같은 코드를 작성해 제출했다.

🍒첫 번째 제출

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int length = scanner.nextInt();
        int n = scanner.nextInt();
        int result = 0;

        for(int i = 0; i < length; i++){
            result += n % 10;
            n /= 10;
        }

        System.out.println(result);
    }
}

런타임 에러가 발생했다. 구체적으로는 InputMismatchException이 발생했다. 내가 조건 N (1 ≤ N ≤ 100)과 입력 케이스를 확인하지 않았다는 사실을 깨달았다.

이 경우 int는 물론 long의 범위까지 벗어나게 된다.

그래서 나는 우선 문자열로 받고 한 글자 씩 숫자로 변환하는 것이 해결 방법이라는 판단을 했다.

🍒최종 제출

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        int length = scanner.nextInt();
        String n = scanner.next();
        int result = 0;

        for(int i = 0; i < length; i++){
            result += Integer.parseInt(n.substring(i, i + 1));
        }

        System.out.println(result);
    }
}


이 때, 나는 substring()을 사용했지만 charAt()으로 하는 것이 더 간결하다.

profile
파인애플 좋아하세요?
post-custom-banner

0개의 댓글