풀이방법
사용된 것:
브루트포스 알고리즘
사칙연산
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 |