-
[Baekjoon Online Judge] 11720번: 숫자의 합문제 풀이/Baekjoon Online Judge 2021. 1. 3. 20:08
[Baekjoon Online Judge] 11720번: 숫자의 합
입력 받은 숫자의 각 자리수를 더하는 문제이다. 정수로 해결하게 된다면 자리수보다 큰 수가 들어올 가능성이 높기 때문에 쉽게 오버플로우가 일어날 수 있다. 그렇기 때문에 String을 활용하여 문제를 해결하였다.
문자열로 입력 받은 즉시 split으로 나누어 문자열 배열로 해결하는 방법과 문자열로 받은 뒤 각각의 자리를 char로 뽑아서 정수형으로 바뀐 뒤 더하는 두가지 방식으로 해결하였다.
import java.io.*; public class Baekjoon11720 { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); int n = Integer.parseInt(bufferedReader.readLine()); String[] numbers = bufferedReader.readLine().split(""); int result = 0; for (String number : numbers) { result += Integer.parseInt(number); } bufferedWriter.write(String.valueOf(result)); bufferedWriter.flush(); bufferedReader.close(); bufferedWriter.close(); } }
split 메소드를 활용하여 문자열 배열에 저장하였다. 그 다음 문자열 배열의 항목을 탐색하여 정수로 변환 후 결과값 변수에 더해준다.
import java.io.*; public class Baekjoon11720 { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(System.out)); int n = Integer.parseInt(bufferedReader.readLine()); String number = bufferedReader.readLine(); int result = 0; for (int i = 0; i < n; i++) { result += Character.getNumericValue(number.charAt(i)); } bufferedWriter.write(String.valueOf(result)); bufferedWriter.flush(); bufferedReader.close(); bufferedWriter.close(); } }
두 번째 풀이 방식은 문자열로 받은 뒤 각각의 index에 접근하여 result에 더해준다. 여기서 주의할 점은 number.charAt(i)이다. charAt 메소드의 경우 반환 타입이 char이다.
int a = (int)'1'; int b = Character.getNumericValue('1'); System.out.println(a); // 49 System.out.println(b); // 1
char를 int로 변환하는 방식은 여러가지 이다. 두 가지만 소개하자면, 첫 번째 방식은 명시적으로 int 형으로 바꿔주는 것인데, a에 ASCII Code로 1을 의미하는 49를 저장한다. 두 번째 방법은 Character wrapper class의 getNumericValue 메소드를 사용하는 것이다. 이것은 문자의 숫자를 int 숫자 그대로인 1을 저장하는 것을 알 수 있다. 그렇기 때문에 b에 1이란 숫자가 저장된 것을 알 수 있다.
'문제 풀이 > Baekjoon Online Judge' 카테고리의 다른 글
[Baekjoon Online Judge] 8958번: OX퀴즈 (0) 2021.01.04 [Baekjoon Online Judge] 2577번: 숫자의 개수 (0) 2021.01.03 [Baekjoon Online Judge] 2438번: 별 찍기 - 1 (0) 2021.01.03 [Baekjoon Online Judge] 1744번: 수 묶기 (0) 2021.01.02 [Baekjoon Online Judge] 1138번: 한 줄로 서기 (0) 2021.01.02