컴퓨터 프로그래밍에서 숫자를 입력받는 것은 흔히 있는 일이지만, 그 내부의 원리를 정확히 이해하고 있는 사람은 많지 않습니다. 이번 글에서는 숫자 입력을 처리할 때 흔히 사용하는 공식인 n = n * 10 + (c - '0')의 원리와 수학적 의미를 상세히 다뤄보겠습니다.
✅ 왜 이 주제를 다루는가?
처음 이 공식을 접하면 직관적으로 이해하기 어렵습니다.
저 또한 처음에는 “왜 갑자기 *10을 곱하지?“라는 의문을 가졌습니다.
이 글은 저와 같은 고민을 한 분들에게 직관적인 이해와 명확한 설명을 제공하기 위해 작성되었습니다.
✅ 기본 공식 (n = n * 10 + (c - '0')) 설명하기
이 공식은 문자열로 입력받은 숫자를 정수형으로 변환할 때 사용되는 표준 알고리즘입니다.
예시로 숫자 “371”을 살펴봅시다.
| 읽는 문자 | 계산 과정 | n 값 |
|---|---|---|
| '3' | n = 0 * 10 + 3 = 3 | 3 |
| '7' | n = 3 * 10 + 7 = 37 | 37 |
| '1' | n = 37 * 10 + 1 = 371 | 371 |
각 단계마다 기존 숫자(n)에 10을 곱해서 자리수를 왼쪽으로 쉬프트하고, 그 다음 읽은 숫자를 더해서 자릿수를 누적하는 구조입니다.
✅ 왜 10을 곱하는가?
십진법에서는 각 자릿수가 왼쪽에서 오른쪽으로 갈수록 10배씩 커집니다.
371 = 3 × 100 + 7 × 10 + 1 × 1
-> ((0 × 10 + 3) × 10 + 7) × 10 + 1
이러한 자릿수 확장 공식이 곧 n = n * 10 + d 공식으로 자연스럽게 이어지는 것입니다.
✅ (c - '0') 은 무엇인가?
이 공식에서 (c - '0')은 문자를 실제 숫자로 바꾸는 핵심 원리입니다.
아스키(ASCII) 코드로 숫자 문자는 '0'이 48, '1'이 49이며 순서대로 1씩 증가합니다.
예시:
- '0' → '0' - '0' = 0
- '1' → '1' - '0' = 1
- '9' → '9' - '0' = 9
이렇게 문자에서 ‘0’을 빼면 실제 정수값이 됩니다.
✅ 이 공식은 누가, 언제 증명한 것일까?
사실 이 공식은 특정한 수학자나 알고리즘 연구자에 의해 따로 증명되지는 않았습니다.
이 공식은 십진법(Positional Notation)이라는 위치적 기수법에서 자리수를 표현하는 방법이 처음 등장한 고대 인도 및 아라비아 수학에서부터 자연스럽게 사용된 개념입니다. 즉, **십진법이 발견된 수천 년 전부터 이미 알려져 있던 “산수의 기본 원리”라 할 수 있습니다.
✅ 수학적으로 엄밀한 증명
이를 수학적으로 엄밀히 표현하면 다음과 같습니다.
- 어떤 십진수 D = d₁d₂...dₙ이 있다고 할 때 (d는 0~9 사이 숫자)
- D = d₁×10^{n-1} + d₂×10^{n-2} + … + dₙ
이를 왼쪽에서 오른쪽으로 한 자리씩 누적해서 계산하면 다음과 같이 나타낼 수 있습니다.
((d₁×10 + d₂)×10 + d₃)×10 + … + dₙ
이것이 정확히 우리가 사용하는
n = n * 10 + d 공식입니다.
✅ 코드 예시로 이해하기 (자바)
실제 자바 코드에서 어떻게 구현되는지 보겠습니다.
// 문자열 "371" → 정수 371
String input = "371";
int n = 0;
for(int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
n = n * 10 + (c - '0');
}
System.out.println(n); // 출력: 371
아스키 코드표 참고

✅ 직관적으로 이해하는 팁
- 이 공식은 자릿수를 하나씩 왼쪽에서 오른쪽으로 읽으면서 이전까지의 값에 10을 곱해 자리수를 올리고 새 값을 더하는 방식입니다.
- 헷갈릴 때는 간단한 숫자를 종이에 써서 직접 반복해 보면 쉽게 이해할 수 있습니다.
예시: “1234”
| 읽는 문자 | 계산 과정 | n 값 |
|---|---|---|
| '1' | 0 × 10 + 1 = 1 | 1 |
| '2' | 1 × 10 + 2 = 12 | 12 |
| '3' | 12 × 10 + 3 = 123 | 123 |
| '4' | 123 × 10 + 4 = 1234 | 1234 |
✅ 정리 및 결론
- n = n * 10 + d 공식은 십진법 자체에서 자연스럽게 도출된 “산수적 알고리즘”입니다.
- 직관적으로 어렵다면, 손으로 반복해 보면 이해하기 쉬워집니다.
- 이는 모든 프로그래밍 언어에서 숫자 변환 시 사용되는 표준적인 방식입니다.
'CS > 알고리즘 & 자료구조' 카테고리의 다른 글
| [백준] BOJ 1874 스택 수열 (1) | 2025.06.09 |
|---|---|
| [백준] 숫자 카드 2 (0) | 2025.06.09 |
| 🧩 Dual-Pivot Quicksort (1) | 2025.05.23 |
| Binary Gap 문제 (1) | 2025.05.21 |
| 벽 부수고 이동하기 (0) | 2025.05.13 |