아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

룬 알고리즘

면접 대비

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

요약
열여섯 자리 카드 번호가 문자열로 주어질 때 Luhn 알고리즘을 통과하는지 판정해 DA 또는 NE를 출력한다.
난이도

쉬움10점 중 2점

유형
문자열, 구현, 시뮬레이션, 수학
정답자
아직 제출이 없습니다

문제

대부분의 은행 카드에는 카드 번호라고 부르는 16자리 숫자가 적혀 있다. 16자리 숫자라면 아무거나 올바른 카드 번호가 되는 것은 아니고, 카드 번호는 룬 알고리즘(Luhn algorithm)을 만족해야 한다. 룬 알고리즘은 다음과 같이 동작한다.

  1. 마지막 자리부터 세어 뒤에서 두 번째, 뒤에서 네 번째처럼 한 자리씩 건너뛴 자리의 숫자를 두 배로 만든다.
  2. 두 배로 만든 값이 10 이상이면 그 값의 각 자리 숫자를 더해 한 자리 수로 바꾼다.
  3. 이렇게 얻은 16개의 수를 모두 더한다.
  4. 더한 값이 10으로 나누어떨어지면 올바른 카드 번호다.

예를 들어 카드 번호가 1234567890123452이면 각 단계는 다음과 같다.

자리12345678910111213141516
원래 숫자1234567890123452
두 배로 만든 뒤22641061481802264102
자리 숫자를 더한 뒤2264165890226412

마지막 줄의 수를 모두 더하면 60이고, 60은 10으로 나누어떨어지므로 이 카드 번호는 올바르다.

주어진 카드 번호가 올바른지 판정하라.

입력

첫째 줄에 카드 번호를 나타내는 16자리 숫자가 주어진다. 맨 앞자리가 0일 수도 있으므로 숫자를 문자열로 읽어야 16자리가 그대로 남는다.

출력

주어진 번호가 올바른 카드 번호이면 DA를, 그렇지 않으면 NE를 출력한다.

예제4

  1. 예제 1

    입력
    1111222233334444
    
    예상 출력
    DA
    
  2. 예제 2

    입력
    7827889687678773
    
    예상 출력
    DA
    
  3. 예제 3

    입력
    0987654321098765
    
    예상 출력
    NE
    
  4. 예제 4

    입력
    1234567890123452
    
    예상 출력
    DA