
//백준 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로 캐스팅을 해주어야 한다.
'코딩 테스트 > 백준' 카테고리의 다른 글
| 백준 - [단계별로 풀어보기 문자열] 2075 문자열 반복 (0) | 2026.03.10 |
|---|---|
| 백준 - [단계별로 풀어보기 문자열] 10809 알파벳 찾기 (0) | 2026.03.08 |
| 백준 - [단계별로 풀어보기 문자열] 11654 아스키 코드 (0) | 2026.03.07 |
| 백준 - [단계별로 풀어보기 문자열] 9086 문자열 (0) | 2026.03.07 |
| 백준 - [단계별로 풀어보기 문자열] 2743 단어 길이 재기 (0) | 2026.03.06 |