백준(boj)1107 - 리모컨
업데이트:
문제 링크 - https://www.acmicpc.net/problem/1107
👀문제이해 및 풀이방법
브루트 포스 문제였는데 너무 어려웠다 하루종일 고민한것 같은데 내 머리속에서 나온 수단과 방법으로 해봐도 계속 WA가 떠서
결국 찾아보고 풀었다..
각 자리수마다 가장가까운 수를 구해도 보았고 앞에서부터 구해나가서 작다면 가장 큰 수 , 크다면 가장 작은 수 등을 비교해서 가장 가까운 수를 구해보았다
하지만 모두 예외가 있었고 답은 그냥 가능한 모든 수를 검사해서 가장 가까운 수를 찾아내는 것이였다 ..
코드는 쉽게 짜는 문제인데 아이디어가 떠오르기 힘들었다고 생각한다
📝코드
#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
class remote{
private:
vector<int> button;
int N;
public:
remote(){
std::cin >>N;
button.resize(10,0);
set_val();
}
void set_val(){
int n,tmp;
std::cin >> n;
for(int i=0;i<n;i++){
std::cin >> tmp;
button[tmp]++;
}
}
void find_sol(){
int m=abs(N-100);
int len,c;
bool flag;
for(int i=0;i<1000000;i++){
flag=true;
c=i;
len=1;
while(1){
if(button[c%10])
flag=false;
if(c/=10)
len++;
else
break;
}
if(flag)
m = min((abs(N-i))+len,m);
}
std::cout << m << '\n';
}
};
int main(){
cin.tie(NULL);cout.tie(NULL);
ios_base::sync_with_stdio(false);
remote rm;
rm.find_sol();
return 0;
}
댓글남기기