https://www.acmicpc.net/problem/1107
๋ฌธ์
์๋น์ด๋ TV๋ฅผ ๋ณด๊ณ ์๋ค. ์๋น์ด๋ ์ฑ๋์ ๋๋ฆฌ๋ ค๊ณ ํ์ง๋ง, ๋ฒํผ์ ๋๋ฌด ์ธ๊ฒ ๋๋ฅด๋ ๋ฐ๋์, ์ผ๋ถ ์ซ์ ๋ฒํผ์ด ๊ณ ์ฅ๋ฌ๋ค.
๋ฆฌ๋ชจ์ปจ์๋ ๋ฒํผ์ด 0๋ถํฐ 9๊น์ง ์ซ์, +์ -๊ฐ ์๋ค. +๋ฅผ ๋๋ฅด๋ฉด ํ์ฌ ๋ณด๊ณ ์๋ ์ฑ๋์์ +1๋ ์ฑ๋๋ก ์ด๋ํ๊ณ , -๋ฅผ ๋๋ฅด๋ฉด -1๋ ์ฑ๋๋ก ์ด๋ํ๋ค. ์ฑ๋ 0์์ -๋ฅผ ๋๋ฅธ ๊ฒฝ์ฐ์๋ ์ฑ๋์ด ๋ณํ์ง ์๊ณ , ์ฑ๋์ ๋ฌดํ๋ ๋งํผ ์๋ค.
์๋น์ด๊ฐ ์ง๊ธ ์ด๋ํ๋ ค๊ณ ํ๋ ์ฑ๋์ N์ด๋ค. ์ด๋ค ๋ฒํผ์ด ๊ณ ์ฅ๋ฌ๋์ง ์ฃผ์ด์ก์ ๋, ์ฑ๋ N์ผ๋ก ์ด๋ํ๊ธฐ ์ํด์ ๋ฒํผ์ ์ต์ ๋ช ๋ฒ ๋๋ฌ์ผํ๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋น์ด๊ฐ ์ง๊ธ ๋ณด๊ณ ์๋ ์ฑ๋์ 100๋ฒ์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์๋น์ด๊ฐ ์ด๋ํ๋ ค๊ณ ํ๋ ์ฑ๋ N (0 ≤ N ≤ 500,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ๊ณ ์ฅ๋ ๋ฒํผ์ ๊ฐ์ M (0 ≤ M ≤ 10)์ด ์ฃผ์ด์ง๋ค. ๊ณ ์ฅ๋ ๋ฒํผ์ด ์๋ ๊ฒฝ์ฐ์๋ ์ ์งธ ์ค์๋ ๊ณ ์ฅ๋ ๋ฒํผ์ด ์ฃผ์ด์ง๋ฉฐ, ๊ฐ์ ๋ฒํผ์ด ์ฌ๋ฌ ๋ฒ ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ๋ ์๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฑ๋ N์ผ๋ก ์ด๋ํ๊ธฐ ์ํด ๋ฒํผ์ ์ต์ ๋ช ๋ฒ ๋๋ฌ์ผ ํ๋์ง๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด
์์ ํ์: ๋จ์ํ ๋ชจ๋ ์ฑ๋์ ๋ณด๋ฉด์ ๋ฒํผ์ผ๋ก ๋๋ฅผ ์์๋์ง ๋ณด๊ณ ํด๋น ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ์ ํํด ์ฐจ์ด์ ์ต์๊ฐ์ ๊ตฌํ๋ค
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
// ์
๋ ฅ
int n, m, error;
cin >> n >> m;
vector<bool> button(10, true);
for(int i=0; i<m; i++) {
cin >> error;
button[error] = false;
}
// ์ฐ์ฐ
int temp, digit, ans=500000; bool able;
for(int i=0; i<=1000000; i++) { // ๋ถ๋ฃจํธํฌ์ค ์์ ํ์
temp = i;
able = true; // ๋ง๊ฐ์ง์ง ์์ ๋ฒํผ์ผ๋ก i๋ฅผ ๋๋ฅผ ์ ์๋๊ฐ?
digit = 0; // i์ ์๋ฆฟ์
while(temp>0){
digit++;
if(!button[temp%10]) {
able = false;
break;
}
temp /= 10;
}
if(i==100) {
able = true;
digit = 0;
} else if(i==0) {
able = button[0];
digit++; // 0์ ์๋ฆฌ์๊ฐ 1์ธ๊ฑฐ ํํ
}
if(able) {
ans = min(abs(i-n)+digit, ans);
}
}
// ์ถ๋ ฅ
cout << ans;
return 0;
}
/*
*/
// Authored by : seondal
// Co-authored by : -
// #include <bits/stdc++.h>
#include <iostream>
#include <vector>
using namespace std;
vector<bool> button;
int digit(int channel) {
if(channel==100)
return 0;
if(channel==0) {
if(!button[0])
return -1;
return 1;
}
int cnt = 0;
while(channel>0){
cnt++;
if(!button[channel%10])
return -1;
channel /= 10;
}
return cnt;
}
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL);
// ์
๋ ฅ
int n, m, error;
cin >> n >> m;
button.assign(m, true);
for(int i=0; i<m; i++) {
cin >> error;
button[error] = false;
}
// ์ฐ์ฐ
int diff = abs(n-100);
for(int i=n; i<=n+100; i++) {
if(digit(i) != -1)
diff = min(digit(i)+i-n, diff);
}
for(int i=n; i>=0; i--) {
if(digit(i) != -1)
diff = min(digit(i)+n-i, diff);
}
// ์ถ๋ ฅ
cout << diff;
return 0;
}
/*
*/
'๐๏ธ ICPC Sinchon > Binary Search' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 1654๋ฒ: ๋์ ์๋ฅด๊ธฐ (0) | 2023.11.17 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 2805๋ฒ: ๋๋ฌด ์๋ฅด๊ธฐ (0) | 2023.11.06 |
[BOJ] ๋ฐฑ์ค 2110๋ฒ: ๊ณต์ ๊ธฐ ์ค์น (0) | 2022.10.13 |
[BOJ] ๋ฐฑ์ค 10816๋ฒ: ์ซ์ ์นด๋ 2 (0) | 2022.10.13 |
[BOJ] ๋ฐฑ์ค 1920๋ฒ: ์ ์ฐพ๊ธฐ (0) | 2022.10.13 |