백준 알고리즘 - 14726 (신용카드 판별)

aladin·2020년 11월 25일
0

백준알고리즘

목록 보기
18/18

문제

I.O

코드 및 해석

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Lhun {

	public static void main(String[] args) throws IOException {

		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));

		int testCaseCnt = Integer.parseInt(bf.readLine());

		String[] cardNumber = new String[testCaseCnt];
		char[][] splitStr = new char[testCaseCnt][];
		char[] tOrF = new char[testCaseCnt];

		int z = 0;
		//문자열을 쪼개서 char배열에 저장한다.
		while (z < testCaseCnt) {
			cardNumber[z] = bf.readLine();
			
			if(cardNumber[z].contains("-")) {
				cardNumber[z] = cardNumber[z].replaceAll("-", "");
			}
			
			splitStr[z] = cardNumber[z].toCharArray();
			z++;
		}
		
		for (int i = 0; i < testCaseCnt; i++) {
			int sum = 0;

			//카드번호의 오른쪽에서부터  index(15)부터 -1씩 감소하며 검사 
			for (int j = splitStr[i].length - 1 ; j >= 0; j--) {
				
				// char to int
				int charToInt = splitStr[i][j] - '0';

				// 오른쪽에서 부터 짝수 index를 만나면
				if (j % 2 == 0) {
					// 짝수항의 *2 값이 10보다 크다면 10의 자리, 1의 자리 쪼개서 더함
					if ((charToInt * 2) >= 10) {
						charToInt *= 2;
						sum +=  (charToInt / 10) + (charToInt) % 10;
					//10보다 작다면 그냥 2배 하여 더함 	
					} else
						sum += charToInt * 2;
				// 오른쪽에서 부터 홀수 index는 그냥 더함 
				} else
					sum += charToInt;
			}
			
			// 10으로 나눈 나머지가 0이라면 T저장 
			if (sum % 10 == 0)
				tOrF[i] = 'T';
			else
				tOrF[i] = 'F';
		}

		for (int i = 0; i < testCaseCnt; i++) {
			System.out.println(tOrF[i]);
		}
	}
}

문제 및 사진출처

출처 - 백준 알고리즘_14726번

profile
컴공과 대학생의 개발노트

0개의 댓글