관리 메뉴

솜씨좋은장씨

[BaekJoon] 14726번 : 신용카드 판별 (Python) 본문

Programming/코딩 1일 1문제

[BaekJoon] 14726번 : 신용카드 판별 (Python)

솜씨좋은장씨 2021. 7. 5. 19:37
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 백준의 신용카드 판별 입니다.

 

14726번: 신용카드 판별

신용카드는 총 16자리의 숫자로 구성되어 있다. 언뜻 보기에는 무작위로 된 숫자로 구성되어 있는 것 같이 보이지만 그 속에는 하나의 수학적 비밀이 숨겨져 있다. 그중 하나가 카드 번호가 유효

www.acmicpc.net

Solution

def check_credit_card_number(card_number):
    is_valid = "F"
    
    sum_num = 0
    
    card_number = list(card_number)
    
    for i, card_num in enumerate(card_number):
        if (i + 1) % 2 != 0:
            number = int(card_num) * 2
            
            if number > 9:
                number = str(number)
                sum_num += int(number[0]) + int(number[1])
            else:
                sum_num += number
        else:
            sum_num += int(card_num)
                
    if sum_num % 10 == 0:
        is_valid = "T"
    
    return is_valid

if __name__ == "__main__":
    for _ in range(int(input())):
        card_number = input()
        print(check_credit_card_number(card_number))

Solution 풀이

먼저 맨처음에 몇개의 수를 입력받을 것인지 개수를 입력 받고 그 수만큼 반복문을 돌면서

16자리의 신용카드 번호를 입력받습니다.

입력받은 신용카드의 번호의 오른쪽 부터 보았을때 짝수번째 수를 2배 증가시키는 것이므로

왼쪽에서는 홀수번째인 수를 찾아 2배로 증가시켜 더해줍니다.

이때 그 수가 10이상이면 십의자리수 + 일의자리수 의 값을 더해줍니다.

그렇게 더한 값이 10으로 나누어지면 T, 그렇지 않으면 F를 출력하도록 하면 끝!

 

SOMJANG/CODINGTEST_PRACTICE

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments