솔솔

[알고리즘] 숫자의 합 (백준 11720번) 본문

나의보물들/알고리즘

[알고리즘] 숫자의 합 (백준 11720번)

솔솔하네 2025. 2. 14. 15:06
반응형

🌵 문제 풀이


1. N의 범위가 1부터 100까지

  •     int형(-2,147,483,648 ~ 2,147,483,647), long형(-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)과 같은 수  자로 담을 수 없음
  • String형으로 입력값을 받은 후 문자 배열로 반환해서 문자 배열값을 순서대로 읽으면서 숫자형으로 더하는 방법 선택 (toCharArray() 함수 활용)

2. 문자열 → 숫자형으로 변형

  • 아스키코드 이용
  • '1'은 아스키코드 값이 49이므로 '1'을 숫자로 변환하려면 '1' - 48  = 1
  • 또는  '1' - '0'으로 변형해서 계산

 

🌵 제출 코드


import java.util.Scanner;

public class Main {
   
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        String sNum = sc.next();
        int sum = 0;

        for(char cNum : sNum.toCharArray()) {
            sum += (cNum - '0');

        }

        System.out.println(sum);
    }
}

 

 

 

 

🌵 다양한 접근 방식


다른 사람의 문제 체출 코드를 보니

나는 아스키코드를 활용해서 문자열을 숫자형으로 변형해서 계산을 했는데

Character.getNumericValue(char형) 함수를 활용해서 계산한 사람도 있었다.

그래서 내가 사용한 방법과 비교해봤다

방법 속도 가독성 설멍
cNum - '0' 빠름 좋음 문자 '0'의 ASCII(=48)을 빼서 정수 변환
cNum - 48 빠름 나쁘지 않음 '0' 대신 숫자 48을 직접 사용 (가독성↓)
Character.getNumericValue(cNum) 느림 좋음 문자 범위(숫자, 알파벳, 유니코드 등)까지 변환 지원

 

✅ 결론은 숫자 문자 변환 시 → cNum - '0'이 가장 빠르고 가독성도 좋은 듯!!