코딩 테스트/백준

백준 - [단계별로 풀어보기 문자열] 11720 숫자의 합

devrabbit22 2026. 3. 7. 23:47

 //백준 11720번 숫자의 합
 int N = int.Parse(Console.ReadLine());  //숫자 개수
 string inputNum = Console.ReadLine();
 int count = 0;
 for (int index = 0; index < N; index++)
 {
     //count += (int)Char.GetNumericValue(inputNum[index]);    //문자의 숫자 값을 반환 결과가 double이므로 (int)로 캐스팅

     count += inputNum[index] - '0'; //문자의 아스키 코드 값에서 '0'의 아스키 코드 값을 빼서 숫자값 출력
 }
 Console.WriteLine(count);

이번 문제는 입력된 숫자들을 모두 더해주기만 하면 되는 간단한 문제이다.

하지만 C#에서는 char가 int로 자동 형 변환이 가능하기 때문에, string으로 입력받은 값을 인덱스로 접근하여 그대로 더하면 숫자 값이 아니라 ASCII 코드 값이 더해지는 현상이 발생한다.

ex) 1은 실제 숫자 1이 아니라 ASCII 코드 값 49로 처리된다.
따라서 각 문자에서 '0'의 ASCII 값을 빼주어야 실제 숫자 값을 얻을 수 있다.

이 방법 외에도 Char 클래스의 GetNumericValue() 메서드를 사용하는 방법이 있다.
이 메서드는 문자에 해당하는 숫자 값을 반환하지만, 반환 타입이 double이기 때문에 int로 캐스팅을 해주어야 한다.