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()
으로 하는 것이 더 간결하다.