[ ๐—•๐—ข๐— ] 1783๋ฒˆ ๋ณ‘๋“ ๋‚˜์ดํŠธ - ๊ทธ๋ฆฌ๋”” | JavaScript

NewHaยท2025๋…„ 5์›” 2์ผ
0
post-thumbnail

๐ŸŽฏ ๋ฌธ์ œ ์„ค๋ช…

๐Ÿงฉ ๋ฐฑ์ค€ 1783๋ฒˆ - ๋ณ‘๋“  ๋‚˜์ดํŠธ | ์‹ค๋ฒ„3

๋ณ‘๋“  ๋‚˜์ดํŠธ๊ฐ€ N ร—ย M ํฌ๊ธฐ ์ฒด์ŠคํŒ์˜ ๊ฐ€์žฅ ์™ผ์ชฝ์•„๋ž˜ ์นธ์— ์œ„์น˜ํ•ด ์žˆ๋‹ค. ๋ณ‘๋“  ๋‚˜์ดํŠธ๋Š” ๊ฑด๊ฐ•ํ•œ ๋ณดํ†ต ์ฒด์Šค์˜ ๋‚˜์ดํŠธ์™€ ๋‹ค๋ฅด๊ฒŒ 4๊ฐ€์ง€๋กœ๋งŒ ์›€์ง์ผ ์ˆ˜ ์žˆ๋‹ค.

  1. 2์นธ ์œ„๋กœ, 1์นธ ์˜ค๋ฅธ์ชฝ
  2. 1์นธ ์œ„๋กœ, 2์นธ ์˜ค๋ฅธ์ชฝ
  3. 1์นธ ์•„๋ž˜๋กœ, 2์นธ ์˜ค๋ฅธ์ชฝ
  4. 2์นธ ์•„๋ž˜๋กœ, 1์นธ ์˜ค๋ฅธ์ชฝ
const move = [
	(2, 1), 
	(1, 2), 
	(-1, 2), 
	(-2, 1)
];

๋”ฐ๋ผ์„œ, ๋ณ‘๋“  ๋‚˜์ดํŠธ๋Š” ์ถœ๋ฐœ ์ดํ›„๋กœ ์™ผ์ชฝ์œผ๋กœ๋Š” ๋‹ค์‹œ ๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ณ‘๋“  ๋‚˜์ดํŠธ๋Š” ์—ฌํ–‰์„ ์‹œ์ž‘ํ•˜๋ ค๊ณ  ํ•˜๊ณ , ์—ฌํ–‰์„ ํ•˜๋ฉด์„œ ๋ฐฉ๋ฌธํ•œ ์นธ์˜ ์ˆ˜๋ฅผ ์ตœ๋Œ€๋กœ ํ•˜๋ ค๊ณ  ํ•œ๋‹ค.ย ๋ณ‘๋“  ๋‚˜์ดํŠธ์˜ ์ด๋™ ํšŸ์ˆ˜๊ฐ€ 4๋ฒˆ๋ณด๋‹ค ์ ์ง€ ์•Š๋‹ค๋ฉด,ย ์ด๋™ ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ํ•œ ๋ฒˆ์”ฉ ์‚ฌ์šฉํ•ด์•ผย ํ•œ๋‹ค. ์ด๋™ ํšŸ์ˆ˜๊ฐ€ 4๋ฒˆ๋ณด๋‹ค ์ ์€ ๊ฒฝ์šฐ(๋ฐฉ๋ฌธํ•œ ์นธ์ด 5๊ฐœ ๋ฏธ๋งŒ)์—๋Š” ์ด๋™ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ œ์•ฝ์ด ์—†๋‹ค.

๋ณ‘๋“  ๋‚˜์ดํŠธ์˜ ์ด๋™ ํšŸ์ˆ˜๊ฐ€ 4๋ฒˆ๋ณด๋‹ค ๋งŽ์•„์„œ ์ด๋™ ๋ฐฉ๋ฒ•์„ ๋ชจ๋‘ ํ•œ ๋ฒˆ์”ฉ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ฒด์ŠคํŒ์˜ ๊ฐ€๋กœ ๊ธธ์ด๊ฐ€ ์ ์–ด๋„ 7 ์ด์ƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ฒด์ŠคํŒ์˜ ํฌ๊ธฐ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ณ‘๋“  ๋‚˜์ดํŠธ๊ฐ€ ์—ฌํ–‰์—์„œ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์นธ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•ด๋ณด์ž.

์ž…๋ ฅ

  • ์ฒด์ŠคํŒ์˜ ์„ธ๋กœ๊ธธ์ด N, ๊ฐ€๋กœ๊ธธ์ด M โ‰ค 2,000,000,000
100 50
1 1
17 5

์ถœ๋ ฅ

๋ณ‘๋“  ๋‚˜์ดํŠธ๊ฐ€ ์—ฌํ–‰์—์„œ ๋ฐฉ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์นธ์˜ ๊ฐœ์ˆ˜์ค‘ ์ตœ๋Œ€๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

48
1
4

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๋ฌธ์ œ ํ’€์ด

  1. ๋ฐฉ๋ฌธํ•œ ์นธ์„ ์„ธ๊ธฐ ์œ„ํ•ด count ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด ์ค๋‹ˆ๋‹ค.

    let count = 0;
  2. ์ฒด์ŠคํŒ์˜ ์„ธ๋กœ ๊ธธ์ด(N)์ด 1์ด๋ฉด ์„ธ๋กœ ์ด๋™์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ด๋™ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ณ‘๋“  ๋‚˜์ดํŠธ๋Š” ์‹œ์ž‘ ์œ„์น˜๋งŒ ๋ฐฉ๋ฌธํ•ฉ๋‹ˆ๋‹ค.

    if(N === 1){
    	count = 1
    }
  3. ์ฒด์ŠคํŒ์˜ ์„ธ๋กœ ๊ธธ์ด(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. ๋ฌธ์ œ ์„ค๋ช…์˜ ๊ทธ๋ฆผ์„ ๋ณด๋ฉด 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 < 4Math.min(4, Math.ceil(M / 2)
N โ‰ฅ 3, M < 7์ˆ˜์ง ์ด๋™์€ ์ž์œ ๋กญ์ง€๋งŒ ๊ฐ€๋กœ๊ฐ€ ์ข์•„์„œ ๋ชจ๋“  ์ด๋™์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ , ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๋ฐฉ๋ฌธํ•˜๊ธฐ ์œ„ํ•ด ์˜ค๋ฅธ์ชฝ์œผ๋กœ 1์นธ์”ฉ๋งŒ ์ด๋™ํ•˜๊ฒŒ ๋จ โ†’ ๋”ฐ๋ผ์„œ M < 4Math.min(4, M)
N โ‰ฅ 3, M โ‰ฅ 74๊ฐ€์ง€ ๋ฐฉํ–ฅ์œผ๋กœ ๋ชจ๋“  ์ด๋™์ด ๊ฐ€๋Šฅํ•˜๊ณ  ์ดํ›„์—๋Š” ์ตœ๋Œ€ํ•œ ๋ฐฉ๋ฌธํ•˜๊ธฐ ์œ„ํ•ด ์˜ค๋ฅธ์ชฝ์œผ๋กœ 1์นธ์”ฉ ์ด๋™ โ†’ ์ดˆ๊ธฐ์˜ 2์นธ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ๊ฐ€๋กœ๊ธธ์ด๋งŒํผ ์ด๋™ํ•˜๋ฏ€๋กœ M - 2M - 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);
profile
๋ฐฑ ๋ฒˆ์„ ๋ณด๋ฉด ํ•œ ๊ฐ€์ง€๋Š” ์•ˆ๋‹ค ๐Ÿ‘€

0๊ฐœ์˜ ๋Œ“๊ธ€