[Java][백준] #8595 - 히든 넘버

배수연·2024년 2월 19일

algorithm

목록 보기
5/45

🔗 백준 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);
    }
}

0개의 댓글