오늘은 ISBN 검증 숫자를 찾는 문제를 풀어봤다.
문자열 중 한 자리가 *로 가려져 있을 때, 그 자리에 들어갈 수 있는 숫자를 찾아야 한다.

https://www.acmicpc.net/problem/14626
ISBN은 총 13자리 숫자.
검증 방식은 아래와 같다:
1. 앞의 12자리 중
- 홀수 번째 자릿수: 그대로 더함
- 짝수 번째 자릿수: 3을 곱해서 더함
2. 총합을 10으로 나눈 나머지를 구함
3. 검증 숫자 = 10 - 나머지 (단, 결과가 10이면 0으로 처리)
🔄 풀이 로직
입력 문자열에서 * 위치를 찾는다.
0부터 9까지 숫자를 넣어보고,
그 숫자가 들어간 ISBN이 유효하면 출력한다.
using System;
class Program
{
static void Main()
{
string isbn = Console.ReadLine();
int starIndex = isbn.IndexOf('*');
for (int i = 0; i <= 9; i++)
{
string temp = isbn.Substring(0, starIndex) + i + isbn.Substring(starIndex + 1);
int sum = 0;
for (int j = 0; j < 12; j++)
{
int digit = temp[j] - '0';
if ((j + 1) % 2 == 1) // 홀수 위치
sum += digit;
else // 짝수 위치
sum += digit * 3;
}
int checkDigit = (10 - (sum % 10)) % 10;
if (checkDigit == temp[12] - '0')
{
Console.WriteLine(i);
break;
}
}
}
}
문자열에서 특정 자리를 바꾸는 방법, 검증 로직을 구현하는 흐름 등
간단하지만 중요한 기초를 연습할 수 있는 문제였다.
문자열과 인덱스를 다루는 감각을 더 키워야겠다!