Lun

면접 대비

시간 제한1초메모리 제한512 MB

요약
카드 번호 문자열에서 한 자리가 'x'로 가려져 있을 때, 룬 검사를 통과하게 만드는 가장 작은 한 자리 숫자를 찾는다.
난이도

쉬움10점 중 3점

유형
구현, 수학, 완전 탐색, 문자열
정답자
아직 제출이 없습니다

문제

어머니 Tihana는 온라인 상점에서 딸 Leda에게 줄 봉제인형을 사려고 했다. 결제 과정에서 시스템은 신용 카드 번호를 입력하라고 요구했다. 그러나 Tihana가 그 번호의 숫자 하나를 잘못 적어서 결제가 실패했다. 인터넷 검색 결과, 이런 시스템은 Luhn 알고리즘으로 잘못된 번호를 알아낸다는 사실이 밝혀졌다.

이 알고리즘은 번호의 마지막 자리에 있는 검증 숫자로 번호의 정확성을 확인한다. 번호의 유효성을 판정하는 단계는 다음과 같다.

  • 번호의 오른쪽에서 두 번째 자리(십의 자리)부터 시작해, 왼쪽으로 한 자리씩 건너뛰며 모든 두 번째 자리의 값을 두 배로 만든다. 이 곱이 9보다 크면 그 곱의 각 자리를 더한다.
  • 앞 단계에서 얻은 모든 값을 합한다.
  • 이렇게 얻은 합에 9를 곱하고, 그 값을 10으로 나눈 나머지를 구한다.
  • 나머지가 번호의 마지막 자리(일의 자리)와 같으면 그 번호는 유효한 것으로 본다.

예를 들어 계좌 번호 79927398713은 유효하다. 나머지 자리들로부터 오른쪽 끝자리 3을 위에서 설명한 방식으로 얻을 수 있기 때문이다.

계좌 번호79927398713
한 자리씩 건너뛰며 두 배718947691672-
합79 (1+8)947697 (1+6)72= 67
(중간 단계 후의 합 · 9) mod 10 = (67 · 9) mod 10 = 603 mod 10 = 3

숫자로만 이루어지고 기호 "x"가 정확히 하나 들어 있는 N자리 문자열로 카드 번호를 입력받아, 계좌 번호가 유효해지도록 기호 "x"를 바꿔 넣을 수 있는 가장 작은 한 자리 숫자를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다. 이는 문제에서 주어진 문자열의 길이다. 둘째 줄에 "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"와 기호 "x" 하나로만 이루어진 길이 N의 문자열이 주어진다.

출력

한 줄에 구하는 한 자리 숫자를 출력한다.

예제3

  1. 예제 1

    입력
    11
    7992739871x
    
    예상 출력
    3
    
  2. 예제 2

    입력
    5
    x2464
    
    예상 출력
    5
    
  3. 예제 3

    입력
    10
    93380x1696
    
    예상 출력
    1