GitHubSeob

C++ / 백준 / 14726 / 신용카드 판별 본문

Baekjoon/Bronze

C++ / 백준 / 14726 / 신용카드 판별

GitHubSeob 2021. 10. 3.

문제

https://www.acmicpc.net/problem/14726

 

14726번: 신용카드 판별

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

www.acmicpc.net

문제풀이

맨 오른쪽부터 짝수번째는 *2를 해준 뒤 10 이상이면 answer에 10을 나눈 몫, 나눈 나머지를 더해준다.

홀수번째일 때는 그냥 answer에 더 해주면 된다.

모든 자리를 확인하였으면 10으로 나눈 나머지가 있는지 없는지만 판별하여 출력하면 된다.

 

코드

#include <iostream>
using namespace std;

int main() {
	int T(0);
	int idx(0);
	cin >> T;
	string number("");

	while (T--) {
		int answer(0);
		cin >> number;
		for (idx = number.size() - 1; idx >= 0; --idx) {
			if (idx % 2 == 0) {
				int mul((number[idx] - '0') * 2);
				if (mul >= 10)	answer += (mul / 10 + mul % 10);
				else answer += mul;
			}
			else answer += number[idx]-'0';
		}
		if (answer % 10 == 0) cout << 'T';
		else cout << 'F';
		cout << '\n';
	}
}

'Baekjoon > Bronze' 카테고리의 다른 글

C++ / 백준 / 13419 / 탕수육  (0) 2021.10.03
C++ / 백준 / 2875 / 대회 or 인턴  (0) 2021.09.02