[ ๐—ฝ๐—ฟ๐—ผ๐—ด๐—ฟ๐—ฎ๐—บ๐—บ๐—ฒ๐—ฟ๐˜€ ] ํƒ๋ฐฐ์ƒ์ž๊บผ๋‚ด๊ธฐ - ์‹œ๋ฎฌ๋ ˆ์ด์…˜, ์ˆ˜ํ•™ | JavaScript

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

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

๐Ÿงฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Lv.1 - ํƒ๋ฐฐ์ƒ์ž๊บผ๋‚ด๊ธฐ

1 ~ย n์˜ ๋ฒˆํ˜ธ๊ฐ€ ์žˆ๋Š” ํƒ๋ฐฐ ์ƒ์ž๊ฐ€ ์ฐฝ๊ณ ์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ํƒ๋ฐฐ ์ƒ์ž๋“ค์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ€๋ฉด์„œ 1๋ฒˆ ์ƒ์ž๋ถ€ํ„ฐ ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ํƒ๋ฐฐ ์ƒ์ž๋ฅผ ํ•œ ๊ฐœ์”ฉ ๋†“์Šต๋‹ˆ๋‹ค. ๊ฐ€๋กœ๋กœ ํƒ๋ฐฐ ์ƒ์ž๋ฅผย w๊ฐœ ๋†“์•˜๋‹ค๋ฉด ์ด๋ฒˆ์—๋Š” ์˜ค๋ฅธ์ชฝ์—์„œ ์™ผ์ชฝ์œผ๋กœ ๊ฐ€๋ฉด์„œ ๊ทธ ์œ„์ธต์— ํƒ๋ฐฐ ์ƒ์ž๋ฅผ ํ•œ ๊ฐœ์”ฉ ๋†“์Šต๋‹ˆ๋‹ค. ๊ทธ ์ธต์— ์ƒ์ž๋ฅผย w๊ฐœ ๋†“์•„ ๊ฐ€์žฅ ์™ผ์ชฝ์œผ๋กœ ๋Œ์•„์™”๋‹ค๋ฉด ๋˜๋‹ค์‹œ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๊ฐ€๋ฉด์„œ ๊ทธ ์œ„์ธต์— ์ƒ์ž๋ฅผ ๋†“์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœย n๊ฐœ์˜ ํƒ๋ฐฐ ์ƒ์ž๋ฅผ ๋ชจ๋‘ ๋†“์„ ๋•Œ๊นŒ์ง€ ํ•œ ์ธต์—ย w๊ฐœ์”ฉ ์ƒ์ž๋ฅผ ์Œ“์Šต๋‹ˆ๋‹ค.

  • ์œ„ ๊ทธ๋ฆผ์€ย wย = 6์ผ ๋•Œ ํƒ๋ฐฐ ์ƒ์ž 22๊ฐœ๋ฅผ ์Œ“์€ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

๋‹ค์Œ ๋‚  ์†๋‹˜์€ ์ž์‹ ์˜ ํƒ๋ฐฐ๋ฅผ ์ฐพ์œผ๋Ÿฌ ์ฐฝ๊ณ ์— ์™”์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์†๋‹˜์ด ์ž์‹ ์˜ ํƒ๋ฐฐ ์ƒ์ž ๋ฒˆํ˜ธ๋ฅผ ๋งํ•˜๋ฉด ํ•ด๋‹น ํƒ๋ฐฐ ์ƒ์ž๋ฅผ ๊บผ๋‚ด์ค๋‹ˆ๋‹ค. ํƒ๋ฐฐ ์ƒ์ž A๋ฅผ ๊บผ๋‚ด๋ ค๋ฉด ๋จผ์ € A ์œ„์— ์žˆ๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  ์ƒ์ž๋ฅผ ๊บผ๋‚ด์•ผ A๋ฅผ ๊บผ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„ ๊ทธ๋ฆผ์—์„œ 8๋ฒˆ ์ƒ์ž๋ฅผ ๊บผ๋‚ด๋ ค๋ฉด ๋จผ์ € 20๋ฒˆ, 17๋ฒˆ ์ƒ์ž๋ฅผ ๊บผ๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹น์‹ ์€ ๊บผ๋‚ด๋ ค๋Š” ์ƒ์ž ๋ฒˆํ˜ธ๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๊บผ๋‚ด๋ ค๋Š” ์ƒ์ž๋ฅผ ํฌํ•จํ•ด ์ด ๋ช‡ ๊ฐœ์˜ ํƒ๋ฐฐ ์ƒ์ž๋ฅผ ๊บผ๋‚ด์•ผ ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ด๋•Œ, ๊บผ๋‚ด์•ผ ํ•˜๋Š” ์ƒ์ž์˜ ์ด๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

๐Ÿฅ… ์ œํ•œ ์‚ฌํ•ญ

  • 2 โ‰ค ํƒ๋ฐฐ ์ƒ์ž์˜ ๊ฐœ์ˆ˜ย nย โ‰ค 100
  • 1 โ‰ค ๊ฐ€๋กœ๋กœ ๋†“๋Š” ์ƒ์ž์˜ ๊ฐœ์ˆ˜ย wย โ‰ค 10
  • 1 โ‰ค ๊บผ๋‚ด๋ ค๋Š” ํƒ๋ฐฐ ์ƒ์ž์˜ ๋ฒˆํ˜ธย numย โ‰คย n

๐Ÿ“ ์ž…์ถœ๋ ฅ ์˜ˆ

nwnumresult
22683
13364

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

์‹œ๋ฎฌ๋ ˆ์ด์…˜

์ฒ˜์Œ์—๋Š”, ๋ฌธ์ œ์— ์ ํžŒ ๊ทธ๋Œ€๋กœ ์ˆœ์„œ๋Œ€๋กœ ํ’€์—ˆ์Šต๋‹ˆ๋‹ค.

boxs๋ผ๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ์ƒ์ž๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์ •๋ ฌํ–ˆ์Šต๋‹ˆ๋‹ค.

const h = Math.ceil(n / w);
const boxs = Array.from({ length: h }, () => Array(w).fill(0));

for(let i = 0; i < h; i++){
	for(let j = 0; j < w; j++){
		if(i % 2 === 0){
			// ์ง์ˆ˜๋ฒˆ์งธ ์ค„์ด๋ผ๋ฉด -> ์˜ค๋ฅธ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ˆซ์ž๋ฅผ ๋‚˜์—ด
			boxs[i][j] = i * w + j + 1
		} else {
			// ํ™€์ˆ˜๋ฒˆ์งธ ์ค„์ด๋ผ๋ฉด <- ์™ผ์ชฝ ๋ฐฉํ–ฅ์œผ๋กœ ์ˆซ์ž๋ฅผ ๋‚˜์—ด
			boxs[i][j] = i * w + (w - j)
		}
	}
}

๊ทธ๋Ÿผ ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ์ž๊ฐ€ ๋ฐฐ์น˜๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ, n์„ ๋„˜์–ด์„œ๊นŒ์ง€ ๋ฐฐ์น˜๊ฐ€ ๋˜๋ฏ€๋กœ, ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

for(let i = 0; i < h; i++){
	for(let j = 0; j < w; j++){
		if(i % 2 === 0){
			let curN = i * w + j + 1
			if(curN <= n) boxs[i][j] = curN;
		} else {
			let curN = i * w + (w - j)
			if(curN <= n) boxs[i][j] = curN;
		}
	}
}

์ด์ œ n์„ ๋„˜์–ด์„œ๋Š” ์ˆซ์ž๋Š” ๋ฐฐ์น˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด์ œ num์˜ ํ–‰, ์—ด์„ ์ฐพ์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ฐ•์Šค๋ฅผ ๋ฐฐ์น˜ํ•˜๋ฉด์„œ ํ•œ๋ฒˆ์— ์ฐพ์œผ๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ณต๋ฌธ ๋‚ด์— ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด์„œ ๋ณ€์ˆ˜์— ์ €์žฅํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

let row;
let col;

for(let i = 0; i < h; i++){
	for(let j = 0; j < w; j++){
		if(i % 2 === 0){
			let curN = i * w + j + 1
			if(curN <= n) boxs[i][j] = curN;
			if(curN === num) {
				row = i;
				col = j;
			}
		} else {
			let curN = i * w + (w - j)
			if(curN <= n) boxs[i][j] = curN;
			if(curN === num) {
				row = i;
				col = j;
			}
		}
	}
}

์ด์ œ ํ•„์š”ํ•œ ์กฐ๊ฑด์„ ๋ชจ๋‘ ๊ฐ–์ถ”์—ˆ์Šต๋‹ˆ๋‹ค. boxs ๋ฐฐ์—ด์„ ๋Œ๋ฉด์„œ, ๋บด์•ผํ•  ์ƒ์ž๋ฅผ ์„ธ์–ด์ค๋‹ˆ๋‹ค.

let count = 0;
for(let r = row; r < h; r++){
	if(boxs[r][col] !== 0) count++;
}

์•„๋ž˜ ์‚ฌ์ง„์˜ ๋นจ๊ฐ„์ƒ‰ ๋ถ€๋ถ„๋งŒ ํƒ์ƒ‰ํ•˜๋ฉฐ count๋ฅผ ์…‰๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  count๋ฅผ return ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ˆ˜ํ•™์  ๊ทœ์น™ ์ฐพ๊ธฐ

ํ•˜์ง€๋งŒ, ์œ„ ๋ฐฉ์‹์€ ๋ฉ”๋ชจ๋ฆฌ๋„ ๋งŽ์ด ์“ฐ๊ณ  ๋ณต์žกํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์šฐ๋ฆฌ๋Š” num์˜ ์œ„์น˜๋ฅผ ์ฐพ์•„์„œ row, col ์„ ์•Œ๊ฒŒ๋˜๋ฉด ๋นจ๊ฐ„์ƒ‰ ๋ถ€๋ถ„๋งŒ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตณ์ด boxs ๋ฐฐ์—ด์„ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ row๋Š” ์‰ฝ๊ฒŒ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. num - 1๋กœ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ด์„œ w๋กœ ๋‚˜๋ˆ„๋ฉด ๋ช‡๋ฒˆ์งธ ์ค„์ธ์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

row๋ฅผ ๊ตฌํ–ˆ๋‹ค๋ฉด, ์ด๋ฅผ ๊ฐ€์ง€๊ณ  col ๋„ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. row๊ฐ€ ์ง์ˆ˜๋ผ๋ฉด ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ˆซ์ž๊ฐ€ ๋‚˜์—ด๋˜๊ณ , ํ™€์ˆ˜๋ผ๋ฉด ์™ผ์ชฝ์œผ๋กœ ์ˆซ์ž๊ฐ€ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. ์ด์— ๋งž์ถฐ์„œ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

let row = Math.floor((num - 1) / w);
let col;
if(row % 2 === 0){
	col = (num - 1) % w
} else {
	col = w - 1 - (num - 1) % w
}

์ด์ œ row ์ด์ƒ์˜ ์ค„์—์„œ ํ•ด๋‹น ์นธ์˜ ์ˆซ์ž๋ฅผ n๊ณผ ๋น„๊ตํ•˜์—ฌ ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด count๋ฅผ ์˜ฌ๋ฆฌ๊ณ , n๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์ƒ์ž๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๋”ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

let count = 0;
for(let i = row; i < h; i++){
	if(i % 2 === 0 && (i * w + col) <= n){
		count++
	} else if(i % 2 !== 0 && (i * w + (w - col)) <= n){
		count++
	}
}

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํฌ๊ฒŒ ์ ˆ์•ฝํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ์„ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

profile
๋ฐฑ ๋ฒˆ์„ ๋ณด๋ฉด ํ•œ ๊ฐ€์ง€๋Š” ์•ˆ๋‹ค ๐Ÿ‘€

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