문제
https://www.acmicpc.net/problem/11720
입력된 숫자 문자열의 각 자리 숫자를 모두 더하는 문제였다.
문제 풀이
1. 배열을 사용하지 않는 풀이
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); //숫자의 개수 입력
String a = br.readLine(); //숫자 문자열 입력
br.close(); //BufferedReader 닫기
int sum = 0;
for (int i = 0; i < N; i++) {
sum += a.charAt(i) - '0'; //각 문자에서 '0'을 빼서 정수로 변환 후 합산
}
System.out.print(sum); //결과 출력
}
}
2. 배열을 사용한 풀이(getBytes())
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine()); //숫자의 개수 입력
String a = br.readLine(); //숫자 문자열 입력
br.close(); // BufferedReader 닫기
byte[] bytes = a.getBytes(); //문자열을 바이트 배열로 변환
int sum = 0;
for (byte b : bytes) {
sum += b - '0'; //각 바이트를 정수로 변환하여 합산
}
System.out.print(sum); //결과 출력
}
}
String 객체에서 getBytes()를 호출하면, 해당 문자열의 각 문자를 UTF-8 인코딩을 사용하여 바이트 배열로 변환한다. 예를 들어, 문자열 "123"을 getBytes()로 변환하면, 바이트 배열 [49, 50, 51]이 된다. 여기서 각 숫자는 ASCII 코드 값이다.
'코딩테스트 > 백준' 카테고리의 다른 글
[백준/JAVA]2675번 문자열 반복 (0) | 2025.01.16 |
---|---|
[백준/JAVA]10809번 알파벳 찾기 (0) | 2025.01.16 |
[백준/JAVA]11654번 아스키 코드 (1) | 2025.01.15 |
[백준/JAVA]9086번 문자열 (0) | 2025.01.15 |
[백준/JAVA]2743번 단어 길이 재기 (0) | 2025.01.14 |