IT/Algorithm | Coding Test

[백준 11720] [Java] 숫자의 합

iamhyeon 2025. 1. 14. 20:49


풀이방법 1)

public class BJ11720_숫자의합 {
    
    public int solution(String numbers) {
        int answer = 0;

        for (int i=0; i<numbers.length(); i++) {
            answer += Character.getNumericValue(numbers.charAt(i));
        }

        return answer;
    }

    public static void main(String[] args) {
        BJ11720_숫자의합 ex = new BJ11720_숫자의합();
        System.out.println(ex.solution("1"));
        System.out.println(ex.solution("54321"));
        System.out.println(ex.solution("70000000000"));
        System.out.println(ex.solution("10987654321"));
    }
}

출력


java.lang.Character.getNumericValue(char)

숫자 형태의 char형을 int형으로 변환

그렇지 않으면 -1 반환

 

- Java 표준 라이브러리의 일부로, java.lang.Character 클래스에 포함된 기본 메서드

- Java 표준 라이브러리는 Java 프로그래밍 언어와 함께 제공되는 기본클래스와 메서드의 집합이다.

 

- 메서드 시그니처: public static int getNumericValue(char ch)

 

- char 값이 숫자 형태(예: '0' ~ '9')인 경우, 해당 숫자 값을 반환한다.
- char 값이 유니코드 숫자 형태(예: 'Ⅰ' ~ 'Ⅻ')인 경우, 해당 유니코드 숫자 값을 반환한다.
- char 값이 숫자 형태가 아닌 경우, -1을 반환한다.

 

ex)

char ch1 = '5';
char ch2 = 'A';
char ch3 = 'Ⅳ'; // 유니코드 숫자

int num1 = Character.getNumericValue(ch1);
int num2 = Character.getNumericValue(ch2);
int num3 = Character.getNumericValue(ch3);

System.out.println("Numeric value of '5': " + num1); 
System.out.println("Numeric value of 'A': " + num2); 
System.out.println("Numeric value of 'Ⅳ': " + num3);

출력


charAt(int idx)

문자열의 idx번째 문자를 반환하는 메서드

 

- java.lang.String 클래스에 정의

- 문자열 내의 특정 위치에 있는 문자를 가져온다.

- 메서드 시그니처 : public char charAt(int idx)


풀이방법 2)

 

import java.util.stream.IntStream;

public class BJ11720_숫자의합 {
    
    public int solution(String numbers) {

        return IntStream.range(0,numbers.length())
                        .map(i -> Character.getNumericValue(numbers.charAt(i)))
                        .sum();
    }

    public static void main(String[] args) {
        BJ11720_숫자의합 ex = new BJ11720_숫자의합();
        System.out.println(ex.solution("1"));
        System.out.println(ex.solution("54321"));
        System.out.println(ex.solution("70000000000"));
        System.out.println(ex.solution("10987654321"));
    }
}

 

IntStream.range(0, numbers.length())

0부터 numbers.length()까지의 정수 스트림을 생성한다.

 

.map(i -> Character.getNumericValue(numbers.charAt(i)))

각 인덱스 i에 대해 numbers.charAt(i)를 숫자로 변환한다.

 

.sum()

변환된 숫자들의 합계를 계산하여 반환한다.

 

 

 

 

 

 

 

 


refer to

메가스터디아이티 이광호쌤

https://nanarin.tistory.com/15https://nanarin.tistory.com/15

 

 

 

반응형