https://www.acmicpc.net/problem/1107
📝문제
📝풀이
완전탐색 문제이다
목표채널 target 까지 0~999999 사이까지 모두 탐색해서 만약 고장난 버튼이 없이 갈 수 있다면
그 채널에서 target 차이와 자릿수를 합한 결과를 반환하면 된다
import static java.util.Arrays.*;
import static java.util.stream.Collectors.*;
import java.util.*;
import java.io.*;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Main {
static int n,target;
static boolean[] isBroken = new boolean[10];
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
target = Integer.parseInt(br.readLine());
n = Integer.parseInt(br.readLine());
if(n!=0){
stream(br.readLine().split(" "))
.mapToInt(Integer::parseInt)
.forEach(e->isBroken[e]=true);
}
//end input
int ans = Math.abs(100-target);
for(int i=0;i<=999999;i++){
String cur = Integer.toString(i);
boolean check=false;
for(int j=0;j<cur.length();j++){
if(isBroken[cur.charAt(j) - '0']){
check=true; // 고장난 버튼이면 break
break;
}
}
if(!check) // 고장안났으면 target 까지 거리 계산해서 갱신
ans = Math.min(ans,cur.length()+Math.abs(i-target));
}
System.out.println(ans);
}
}
처음에 입력 0 인 경우 입력 받기에서 런타임 에러나는 것 때매 한참 헤맸다..
'알고리즘,PS > 백준' 카테고리의 다른 글
[BOJ] 백준 [2504] 괄호의 값JAVA (0) | 2022.04.21 |
---|---|
[BOJ] 백준 [18111] 마인크래프트 JAVA (0) | 2022.04.20 |
[BOJ] 백준 [14500] 테트로미노 JAVA (0) | 2022.04.14 |
[BOJ] 백준 [1800] 인터넷 설치 JAVA (0) | 2022.04.13 |
[BOJ] 백준 [1032] 명령 프롬프트 JAVA (0) | 2022.04.12 |