반응형
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public void solution() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int targetChannel = Integer.parseInt(br.readLine());
int brokenButtonCount = Integer.parseInt(br.readLine());
boolean[] brokenButton = new boolean[10];
int result = Math.abs(targetChannel - 100);
if(brokenButtonCount!=0) {
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < brokenButtonCount; i++) {
brokenButton[Integer.parseInt(st.nextToken())] = true;
}
}
if(targetChannel==100) result = 0;
for(int i=0; i<=1000000; i++){
int size = String.valueOf(i).length();
boolean check = false;
for(int j=0; j<size; j++){
if(brokenButton[String.valueOf(i).charAt(j)-'0']){
check = true;
break;
}
}
if(!check){
int min = Math.abs(targetChannel-i)+size;
result = Math.min(result, min);
}
}
System.out.println(result);
}
public static void main(String args[]) throws IOException {
new Main().solution();
}
}
처음 시도는 각 인덱스를 고장난 버튼과 비교해 가장 근사치인 숫자로 만들어낸 다음 자릿수 만큼++ 해줄려고 했었다.
정답도 비슷한 개념이지만 굳이 각 자릿수 인덱스마다 비교하는 것이 번거로워서 좀더 쉬운 방법은 없을까 하다가,
완전탐색이라는 개념으로 모든 경우의 수를 계산해서 가장 낮은 수치를 출력하도록 했다.
반응형
'개발 > 알고리즘' 카테고리의 다른 글
백준 9095번 : 1, 2, 3 더하기 (0) | 2023.01.03 |
---|---|
백준 6064번 : 카잉 달력 (0) | 2023.01.02 |
백준 14500번 : 테트로미노 (0) | 2023.01.02 |
백준 1748번 : 수 이어쓰기1 (0) | 2023.01.01 |
백준 1476번 : 날짜 계산 (0) | 2022.12.29 |