알고리즘 문제풀이/백준

#14626 : ISBN

모항 2022. 6. 1. 20:54

풀이방법

사용된 것:

브루트포스 알고리즘

사칙연산

 

2022.06.01

머리 쓰거나 똑똑하게 푸려고 하면 오히려 어렵다. 주먹구구식으로 하니 쉽게 풀렸다.

 

빈칸의 위치가 어디인지 찾아둔다.

빈칸을 제외한 모든 수에 대하여, 1 또는 3의 알맞은 가중치를 곱하여 모조리 더한다. 마지막 자리의 체크기호도 같이 더한다. 이렇게 싹 더해준 값을 sum이라 하겠다.

 

(아래 코드에서는 빈칸 위치 찾기와 덧셈을 동시에 했다)

 

빈칸이 가중치 1의 위치라면 다음과 같이 풀면 된다.

0부터 9까지의 정수 i에 대하여 반복문을 돌리며,
( sum+i ) % 10 == 0 을 만족하는 수가 발견되면 그 수를 정답으로 취한다.

 

반대로 빈칸이 가중치 3의 위치라면 다음과 같이 풀면 된다.

0부터 9까지의 정수 i에 대하여 반복문을 돌리며,
( sum+ (3*i) ) % 10 == 0 을 만족하는 수가 발견되면 그 수를 정답으로 취한다.

 

코드

Java(2022.06.01)

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		
		//빈칸의 위치를 찾아내는 동시에, 체크기호를 포함한 나머지 12개는 알맞은 가중치를 적용하여 모조리 더하기
		int sum = 0;
		int place = -1;
		for(int i=0; i<13; i++) {
			char ch = input.charAt(i);
			if(ch == '*') {place = i; continue;}
			int temp = ch-'0';
			sum += i%2==0 ? temp : (temp*3);
		}
		

		//빈칸의 인덱스에 따라 정답을 구하기
		int answer = -1;
		
		if(place%2==0) {
			//짝수인덱스(가중치 1)
			for(int i=0; i<=9; i++) {
				if((sum+i)%10 == 0) {
					answer = i; break;
				}
			}
		}
		else {
			//홀수인덱스(가중치 3)
			for(int i=0; i<=9; i++) {
				if((sum+(i*3))%10 == 0) {
					answer = i; break;
				}
			}
		}
		
		//정답 출력
		System.out.print(answer);
		
		sc.close();
	}

}

'알고리즘 문제풀이 > 백준' 카테고리의 다른 글

#2370 : 시장 선거 포스터  (0) 2022.06.08
#17829 : 222-풀링  (0) 2022.06.04
#1260 : DFS와 BFS  (0) 2022.06.01
#1303 : 전쟁 - 전투  (0) 2022.05.30
#2667 : 단지번호붙이기  (0) 2022.05.29