🔗 백준 8595 - 히든 넘버
문제

알고리즘 분류
풀이
1. 단어의 길이, 단어 입력
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
String str = br.readLine();
2. 히든 넘버 구분
- 숫자인 경우 hidden에 저장
- 연속된 숫자가 나올 경우 자릿수를 고려해 10씩 곱하기
- 문자가 나올 경우 저장된 hidden(히든 넘버)를 sum(합계)에 누계하고 hidden을 초기화
long hidden = 0;
long sum = 0;
for(int i = 0; i<num; i++){
char n = str.charAt(i);
if (n >= '0' && n <= '9') {
hidden = (hidden * 10) + (n - '0');
} else {
sum += hidden;
hidden = 0;
}
}
sum += hidden;
- char형의 숫자를 강제 형변환할 경우 아스키코드로 변환되는데, 0~9의 아스키코드는 48~57의 연속된 값을 가지므로 -'0' 또는 -48을 해주면 0~9로 변환된다.
- int가 아닌 long을 사용해야한다.
전체 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int num = Integer.parseInt(br.readLine());
String str = br.readLine();
long hidden = 0;
long sum = 0;
for(int i = 0; i<num; i++){
char n = str.charAt(i);
if (n >= '0' && n <= '9') {
hidden = (hidden * 10) + (n - '0');
} else {
sum += hidden;
hidden = 0;
}
}
sum += hidden;
System.out.println(sum);
}
}