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 |