๐ ๋ฌธ์
์๋น์ด๋ TV๋ฅผ ๋ณด๊ณ ์๋ค. ์๋น์ด๋ ์ฑ๋์ ๋๋ฆฌ๋ ค๊ณ ํ์ง๋ง, ๋ฒํผ์ ๋๋ฌด ์ธ๊ฒ ๋๋ฅด๋ ๋ฐ๋์, ์ผ๋ถ ์ซ์ ๋ฒํผ์ด ๊ณ ์ฅ๋ฌ๋ค.
๋ฆฌ๋ชจ์ปจ์๋ ๋ฒํผ์ด 0๋ถํฐ 9๊น์ง ์ซ์, +์ -๊ฐ ์๋ค. +๋ฅผ ๋๋ฅด๋ฉด ํ์ฌ ๋ณด๊ณ ์๋ ์ฑ๋์์ +1๋ ์ฑ๋๋ก ์ด๋ํ๊ณ , -๋ฅผ ๋๋ฅด๋ฉด -1๋ ์ฑ๋๋ก ์ด๋ํ๋ค. ์ฑ๋ 0์์ -๋ฅผ ๋๋ฅธ ๊ฒฝ์ฐ์๋ ์ฑ๋์ด ๋ณํ์ง ์๊ณ , ์ฑ๋์ ๋ฌดํ๋ ๋งํผ ์๋ค.
์๋น์ด๊ฐ ์ง๊ธ ์ด๋ํ๋ ค๊ณ ํ๋ ์ฑ๋์ N์ด๋ค. ์ด๋ค ๋ฒํผ์ด ๊ณ ์ฅ๋ฌ๋์ง ์ฃผ์ด์ก์ ๋, ์ฑ๋ N์ผ๋ก ์ด๋ํ๊ธฐ ์ํด์ ๋ฒํผ์ ์ต์ ๋ช ๋ฒ ๋๋ฌ์ผํ๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์๋น์ด๊ฐ ์ง๊ธ ๋ณด๊ณ ์๋ ์ฑ๋์ 100๋ฒ์ด๋ค.
์ ๋ ฅ
- ์ฒซ์งธ ์ค์ ์๋น์ด๊ฐ ์ด๋ํ๋ ค๊ณ ํ๋ ์ฑ๋ N (0 ≤ N ≤ 500,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ๊ณ ์ฅ๋ ๋ฒํผ์ ๊ฐ์ M (0 ≤ M ≤ 10)์ด ์ฃผ์ด์ง๋ค. ๊ณ ์ฅ๋ ๋ฒํผ์ด ์๋ ๊ฒฝ์ฐ์๋ ์ ์งธ ์ค์๋ ๊ณ ์ฅ๋ ๋ฒํผ์ด ์ฃผ์ด์ง๋ฉฐ, ๊ฐ์ ๋ฒํผ์ด ์ฌ๋ฌ ๋ฒ ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ๋ ์๋ค.
์ถ๋ ฅ
- ์ฒซ์งธ ์ค์ ์ฑ๋ N์ผ๋ก ์ด๋ํ๊ธฐ ์ํด ๋ฒํผ์ ์ต์ ๋ช ๋ฒ ๋๋ฌ์ผ ํ๋์ง๋ฅผ ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์
| ์์ ์ ๋ ฅ | ์์ ์ถ๋ ฅ |
| 5457 3 6 7 8 |
6 |
โ๏ธ ํ์ด
๊ฒฝ์ฐ์ ๋ฐ๋ฅธ ์ฒ๋ฆฌ๋ฅผ ์ ํด์ผํ๋ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํ๋ค.
100๋ฒ ์ฑ๋์์ ์์ํ๊ธฐ ๋๋ฌธ์ ๋ฒํธ ๋ฒํผ์ ๋๋ฌ ์ฑ๋์ ์ฎ๊ธฐ๋ ๊ฒ๊ณผ +-๋ฒํผ๋ง ๋๋ฅด๋ ๊ฒ์ด ์ข์์ง ํ์ธํด์ผ ํ๋ค. ๋ด ๊ฒฝ์ฐ ๋ต์ ์ ์ฅํ๋ cnt์ ์ด๊ธฐ๊ฐ์ผ๋ก 100๋ฒ์์ ์์ํด +-๋ง ์ด์ฉํด ๋ชฉํ ์ฑ๋ N์ผ๋ก ์ฎ๊ธฐ๋ ๊ฒฝ์ฐ๋ก ์ค์ ํ๊ณ , ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ํ๋ฉฐ ๋ ์์๊ฐ์ผ๋ก ๊ฐฑ์ ์์ผฐ๋ค.
๋ง์ฝ ํ์ฌ ์ฑ๋์ด 100์ธ๋ฐ 100์ ์ฑ๋๋ก ์ฎ๊ธฐ๋ ๊ฒฝ์ฐ๊ฐ ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ๋ง์ฝ N์ด 100์ด๋ผ๋ฉด 0์ ์ถ๋ ฅํ๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์ ๊ฐ์ฅ ์ต์๊ฐ์ ๊ณ์ฐํ๋ค. ์ด๋ ๊ณ ์ฅ๋ ๋ฒํผ์ Set ์๋ฃ๊ตฌ์กฐ์ ์ ์ฅํด์ ๊ฐ์ด ์๋์ง ์๋์ง๋ฅผ ํ๋ณํ๋ค. ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ์ฐํ๋ฉด์ 0๋ถํฐ 1,000,000๊น์ง๋ฅผ ๋ฒ์๋ก ์ก์๋๋ฐ ๊ทธ ์ด์ ๋ ๋ชฉํ์ฑ๋์ด ์ต๋ 500,000์ด๊ธฐ ๋๋ฌธ์ ๋ ๋ฐฐ๋ก ์ฐ์ ํ๋ค.
์ฌ์ค ์ฒ์ ์ด ๋ฒ์ ์๊ฐํ ๋ N * 2๋ก ์ก์์๋๋ฐ ๊ณ์ "ํ๋ ธ์ต๋๋ค"๋ผ๋ ๋ฌธ๊ตฌ๋ฅผ ๋ง์ฃผ์ณ์ผ ํ๋ค. ์ฌ๋ฌ ์์ธ๋ฅผ ์๊ฐํ๋ค๊ฐ 0์ธ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํ๊ฒ ๋์๊ณ 1,000,000์ผ๋ก ์์ ํ๊ฒ ๋์๋ค.
๋ฐ๋ณต๋ฌธ์ ๋๋ฉฐ i๊ฐ ๋ง๋ค์ด์ง๋ ์ซ์๊ฐ ๋๋ค. ์ด๋ฅผ ํ์ ๋ณํ์ ํตํด ๋ฌธ์์ด๋ก ๋ฐ๊พธ๊ณ ๊ฐ ์๋ฆฌ์ ๊ณ ์ฅ๋ ๋ฒํผ์ด ํฌํจ๋์ด ์๋์ง๋ฅผ ํ์ธํ๋ค. ๋ง์ฝ ๊ณ ์ฅ๋ ๋ฒํผ์ด ์๋ค๋ฉด ๋๋ฅผ ์ ์๋ ๋ฒํธ์ด๊ธฐ ๋๋ฌธ์ ์ธ๋ถ ๋ฐ๋ณต๋ฌธ(for)๋ฅผ continue ์์ผ์ฃผ๊ณ ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ N๊ณผ ๋น๊ตํ๊ณ ์๋ฆฌ์๋ฅผ ๋ํด ์ต์๊ฐ์ ๊ฐ์ง๋ cnt์ ๋์๋ฅผ ๋น๊ตํ๋ฉฐ ๊ฐฑ์ ํ๋ค. ๊ฒฐ๊ตญ ๋ฐ๋ณต๋ฌธ์ด ์ข ๋ฃ๋๋ฉด cnt์ ์๋ ๊ฐ์ด ๊ฐ์ฅ ์ต์๊ฐ ๋์ด ์ถ๋ ฅํ๋ฉฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
โจ๏ธ ์ฝ๋
const fs = require('fs');
const filePath = process.platform === 'linux' ? '/dev/stdin' : './testcase/1107.txt';
let input = fs.readFileSync(filePath).toString().trim().split('\n');
const target = input[0];
if (target === '100') console.log(0);
else {
const disableBtn = +input[1] ? new Set(input[2].split(' ')) : new Set();
let cnt = Math.abs(+target - 100);
outer: for (let i = 0; i <= 1000000; i++) {
const check = String(i);
for (let j = 0; j < check.length; j++) {
if (disableBtn.has(check[j])) continue outer;
}
const compare = Math.abs(+target - i) + check.length;
cnt = Math.min(compare, cnt);
}
console.log(cnt);
}'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Algoruthm] ์นจํฌ (๋ฐฑ์ค - 13565) (0) | 2023.05.03 |
|---|---|
| [Algorithm] ์ ํ ์ ํ (๋ฐฑ์ค - 11060) (0) | 2023.05.02 |
| [Algorithm] ๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์(๋ฐฑ์ค - 16928) (0) | 2023.04.30 |
| [Algorithm] ์ฟ ํค ๊ตฌ์ (0) | 2023.04.28 |
| [Algorithm] ๋ช ์์ ์ ๋น(1) (0) | 2023.04.27 |