
๋ณ๋ ๋์ดํธ๊ฐ N รย M ํฌ๊ธฐ ์ฒด์คํ์ ๊ฐ์ฅ ์ผ์ชฝ์๋ ์นธ์ ์์นํด ์๋ค. ๋ณ๋ ๋์ดํธ๋ ๊ฑด๊ฐํ ๋ณดํต ์ฒด์ค์ ๋์ดํธ์ ๋ค๋ฅด๊ฒ 4๊ฐ์ง๋ก๋ง ์์ง์ผ ์ ์๋ค.
const move = [
(2, 1),
(1, 2),
(-1, 2),
(-2, 1)
];
๋ฐ๋ผ์, ๋ณ๋ ๋์ดํธ๋ ์ถ๋ฐ ์ดํ๋ก ์ผ์ชฝ์ผ๋ก๋ ๋ค์ ๊ฐ์ง ์์ต๋๋ค.
๋ณ๋ ๋์ดํธ๋ ์ฌํ์ ์์ํ๋ ค๊ณ ํ๊ณ , ์ฌํ์ ํ๋ฉด์ ๋ฐฉ๋ฌธํ ์นธ์ ์๋ฅผ ์ต๋๋ก ํ๋ ค๊ณ ํ๋ค.ย ๋ณ๋ ๋์ดํธ์ ์ด๋ ํ์๊ฐ 4๋ฒ๋ณด๋ค ์ ์ง ์๋ค๋ฉด,ย ์ด๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ ํ ๋ฒ์ฉ ์ฌ์ฉํด์ผย ํ๋ค. ์ด๋ ํ์๊ฐ 4๋ฒ๋ณด๋ค ์ ์ ๊ฒฝ์ฐ(๋ฐฉ๋ฌธํ ์นธ์ด 5๊ฐ ๋ฏธ๋ง)์๋ ์ด๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ์ฝ์ด ์๋ค.
๋ณ๋ ๋์ดํธ์ ์ด๋ ํ์๊ฐ 4๋ฒ๋ณด๋ค ๋ง์์ ์ด๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ ํ ๋ฒ์ฉ ์ฌ์ฉํ๋ ค๋ฉด ์ฒด์คํ์ ๊ฐ๋ก ๊ธธ์ด๊ฐ ์ ์ด๋ 7 ์ด์์ด์ด์ผ ํฉ๋๋ค.

์ฒด์คํ์ ํฌ๊ธฐ๊ฐ ์ฃผ์ด์ก์ ๋, ๋ณ๋ ๋์ดํธ๊ฐ ์ฌํ์์ ๋ฐฉ๋ฌธํ ์ ์๋ ์นธ์ ์ต๋ ๊ฐ์๋ฅผ ๊ตฌํด๋ณด์.
100 50
1 1
17 5
๋ณ๋ ๋์ดํธ๊ฐ ์ฌํ์์ ๋ฐฉ๋ฌธํ ์ ์๋ ์นธ์ ๊ฐ์์ค ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค.
48
1
4
๋ฐฉ๋ฌธํ ์นธ์ ์ธ๊ธฐ ์ํด count ๋ณ์๋ฅผ ์ ์ธํด ์ค๋๋ค.
let count = 0;
์ฒด์คํ์ ์ธ๋ก ๊ธธ์ด(N)์ด 1์ด๋ฉด ์ธ๋ก ์ด๋์ด ๋ถ๊ฐ๋ฅํ๋ฏ๋ก ์ด๋ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ณ๋ ๋์ดํธ๋ ์์ ์์น๋ง ๋ฐฉ๋ฌธํฉ๋๋ค.
if(N === 1){
count = 1
}
์ฒด์คํ์ ์ธ๋ก ๊ธธ์ด(N)์ด 2์ด๋ฉด 1์นธ ์๋ก, 2์นธ ์ค๋ฅธ์ชฝ(1, 2) ํน์ 1์นธ ์๋๋ก, 2์นธ ์ค๋ฅธ์ชฝ(-1, 2)์ผ๋ก๋ง ์ด๋ํ ์ ์์ต๋๋ค.
์ด ๋์๋ ์ฒด์คํ์ ๊ฐ๋ก ๊ธธ์ด(M)์ ๋ฐ๋ผ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ ์ ์๋ ๋งํผ๋ง ์, ์๋๋ก ์ด๋ํ๋ฉด์ ์์ง์ผ ์ ์์ต๋๋ค. 2์นธ์ฉ ์ด๋ํ๋ฏ๋ก ๊ฐ๋ก ๊ธธ์ด๋ฅผ 2๋ก ๋๋ ๋งํผ ์ด๋ํ ์ ์์ต๋๋ค.
๋ฌธ์ ์ ๋ฐ๋ฅด๋ฉด 4๋ฒ ์ด์ ์ด๋ํ๋ ค๋ฉด ๋ชจ๋ ์ด๋์ ๋ค ์จ์ผ ํ๋ฏ๋ก, ์ด ๊ฒฝ์ฐ์๋ ๋ชจ๋ ์ด๋์ ๋ค ์ฌ์ฉํ์ง ๋ชปํ๋ ๋ฑ 4๋ฒ๊น์ง๋ง ์ด๋ํ ์ ์์ต๋๋ค.
if(N === 2) {
count = Math.min(4, Math.ceil(M / 2))
}
๋ฌธ์ ์ค๋ช ์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด 4๊ฐ์ง ๋ฐฉํฅ์ผ๋ก ๋ชจ๋ ์ด๋ํ๋ ๊ฒฝ์ฐ, ์ฒด์คํ์ ์ต์ ์ธ๋ก 3, ๊ฐ๋ก 7์ ํฌ๊ธฐ๊ฐ ํ์ํฉ๋๋ค.
๋ฐ๋ผ์ ์ฒด์คํ์ ์ธ๋ก ๊ธธ์ด(N)์ด 3 ์ด์์ธ ๊ฒฝ์ฐ ๋ถํฐ๋ ๊ฐ๋ก ๊ธธ์ด(M)์ด 7์ ๋๋์ง ์ ๋๋์ง์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๋ง์ฝ 7์ ๋์ง ์๋ ๋ค๋ฉด, 4๋ฒ๊น์ง๋ง ์ด๋ํ ์ ์์ต๋๋ค. ์ด ๋ ๊ฐ์ฅ ๋ง์ ์นธ์ ๋ฐฉ๋ฌธํ๋ ค๋ฉด ์ค๋ฅธ์ชฝ์ผ๋ก 1์นธ์ฉ๋ง ์ด๋ํฉ๋๋ค. ์ฆ, 4๋ฒ ๋ด์ 2์นธ ์๋ก, 1์นธ ์ค๋ฅธ์ชฝ(2, 1) ํน์ 2์นธ ์๋๋ก, 1์นธ ์ค๋ฅธ์ชฝ(-2, 1)์ผ๋ก๋ง ์ด๋ํฉ๋๋ค.
7์ ๋๋ ๋ค๋ฉด ๋ชจ๋ ๋ฐฉํฅ์ ๋ค ์ฌ์ฉํ ํ ๋ถํฐ ์ต๋ํ ๋ง์ ์นธ์ ๋ฐฉ๋ฌธํ๊ธฐ ์ํด ์ค๋ฅธ์ชฝ์ผ๋ก๋ 1์นธ์ฉ๋ง ์ด๋ํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฅผ ์กฐ๊ธ ๋ค๋ฅด๊ฒ ๋งํ์๋ฉด ์กฐ๊ฑด์ ๋ฐ๋ผ (1, 2), (-1, 2)์ผ ๋๋ง ๊ฐ๋ก๋ก 2์นธ์ฉ ์ด๋ํ๊ณ ๊ทธ ์ธ์๋ ๋ฌด์กฐ๊ฑด 2์ฉ ์ด๋ํฉ๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ก ๊ธธ์ด(M) - 2 ๋งํผ ์ด๋ํ๊ฒ ๋ฉ๋๋ค. (2์นธ์ฉ ์ด๋ํ๋ฉด์ ๋ค๋ฆฌ์ง ์์ 2์นธ๋ง ๋นผ์ค๋๋ค.)
if(N >= 3) {
if(M < 7) {
count = Math.min(4, M);
} else {
// M >= 7
count = M - 2;
}
}
์ด๋ฅผ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
| ์ฒด์คํ ํฌ๊ธฐ | ์ค ๋ช | count |
|---|---|---|
| N === 1 | ์ธ๋ก ์ด๋์ด ๋ถ๊ฐ๋ฅํ์ฌ ์ด๋ํ์ง ๋ชปํจ | 1 |
| N === 2 | ์์ง์ผ๋ก ํ ์นธ๋ง ์ด๋ ๊ฐ๋ฅํ๋ฏ๋ก, ์ค๋ฅธ์ชฝ์ผ๋ก๋ 2์นธ ์ฉ ์ด๋ํ๊ฒ ๋จ โ ๋ฐ๋ผ์ M / 2 < 4 | Math.min(4, Math.ceil(M / 2) |
| N โฅ 3, M < 7 | ์์ง ์ด๋์ ์์ ๋กญ์ง๋ง ๊ฐ๋ก๊ฐ ์ข์์ ๋ชจ๋ ์ด๋์ ์ฌ์ฉํ ์ ์๊ณ , ์ต๋ํ ๋ง์ด ๋ฐฉ๋ฌธํ๊ธฐ ์ํด ์ค๋ฅธ์ชฝ์ผ๋ก 1์นธ์ฉ๋ง ์ด๋ํ๊ฒ ๋จ โ ๋ฐ๋ผ์ M < 4 | Math.min(4, M) |
| N โฅ 3, M โฅ 7 | 4๊ฐ์ง ๋ฐฉํฅ์ผ๋ก ๋ชจ๋ ์ด๋์ด ๊ฐ๋ฅํ๊ณ ์ดํ์๋ ์ต๋ํ ๋ฐฉ๋ฌธํ๊ธฐ ์ํด ์ค๋ฅธ์ชฝ์ผ๋ก 1์นธ์ฉ ์ด๋ โ ์ด๊ธฐ์ 2์นธ ์ด๋ํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๊ฐ๋ก๊ธธ์ด๋งํผ ์ด๋ํ๋ฏ๋ก M - 2 | M - 2 |
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim();
const [N, M] = input.split(' ').map(Number);
let count = 0;
if (N === 1) {
count = 1;
} else if (N === 2) {
count = Math.min(4, Math.ceil(M / 2));
} else if (N >= 3 && M < 7) {
count = Math.min(4, M);
} else {
count = M - 2;
}
console.log(count);