n^2๋ฐฐ์—ด ์ž๋ฅด๊ธฐ ๋ฌธ์ œ

9/4/2025

n^2 ๋ฐฐ์—ด ์ž๋ฅด๊ธฐ ๋ฌธ์ œ

https://school.programmers.co.kr/learn/courses/30/lessons/87390

์ดˆ์•ˆ

function solution(n, left, right) {
    var answer = [];
    for (let i = 1; i <= n; i++) {
        // console.log("i :", i);
        for (let j = 1; j <= n; j++) {
            const k = j > i ? j : i;
            answer.push(k);
        }
    }
    // console.log(answer);
    answer = answer.slice(left, right + 1);

    return answer;
}

์ฒ˜์Œ์—” ์ด๋ ‡๊ฒŒ ํ’€์—ˆ๋”๋‹ˆ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ๋ฐœ์ƒ.
๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ๋งŽ์ด ์ฐจ์ง€ํ•˜๋ฉด ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๊ณ  ํ•˜๋Š”๋ฐ, ๊ทธ๊ฑฐ ๋•Œ๋ฌธ์ธ๊ฒƒ ๊ฐ™๋‹ค.
๋ฌธ์ œ ์กฐ๊ฑด์—์„œ ์ฃผ์–ด์ง€๋Š” n์˜ ๋ฒ”์œ„๋ฅผ 1 <= n <= 10^7์ด๋ผ๊ณ  ํ•˜๋‹ˆ๊นŒ ์ตœ๋Œ€ 10^14 ๊ฐœ์˜ ์ˆซ์ž๋ฅผ ๋‹ด๋Š” ๋ฐฐ์—ด์ด ํ•„์š”ํ•˜๊ฒŒ ๋œ๋‹ค.

์ˆ˜์ •์•ˆ

function solution(n, left, right) {
	var answer = [];
	let count = 0;
	for (let i = 0; i < n; i++) {
		for (let j = 0; j < n; j++) {
			const k = (j > i ? j : i) + 1;
			if (count >= left && count <= right) {
				answer.push(k);
			}
			if (count > right) {
				break;
			}
			count++;
		}
		if (count > right) {
			break;
		}
	}

	return answer;
}

์ด๋ ‡๊ฒŒ ํ’€์—ˆ๋”๋‹ˆ 8/20๊ฐœ๊ฐ€ ์‹œ๊ฐ„์ดˆ๊ณผ๋ฅผ ์‹คํŒจํ–ˆ๋‹ค.
๋ฐ˜๋ณต๋ฌธ ์ค‘์ฒฉ์œผ๋กœ ์ธํ•œ O(n2)O(n^2)์˜ ๋ณต์žก๋„๊ฐ€ ๋ฌธ์ œ์ธ๊ฑฐ ๊ฐ™๋‹ค.
์•„๋ฌด๋ฆฌ count>right์ด๋ฉด ๋น ์ ธ๋‚˜์˜จ๋‹ค๊ณ  ํ•ด๋„ right๊ฐ€ ์›Œ๋‚™ ํฌ๋ฉด ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜๋„.

๋‹ต์•ˆ

function solution(n, left, right) {
	const answer = [];

	for (let a = left; a <= right; a++) {
		const i = Math.floor(a / n);
		const j = a % n;
		// console.log(j, k);

		const k = (j > i ? j : i) + 1;
		answer.push(k);
	}

	return answer;
}

ํ•ต์‹ฌ์€ ์ดˆ์•ˆ๊ณผ ์ˆ˜์ •์•ˆ์—์„œ๋Š” ๋ถˆํ•„์š”ํ•œ ์—ฐ์‚ฐ๊นŒ์ง€ ํ•œ ๋‹ค์Œ์— ์กฐ๊ฑด์„ ํ™•์ธํ•ด์„œ answer ๋ฐฐ์—ด์— ์ถ”๊ฐ€ ํ–ˆ๋˜๊ฒƒ.
๋ฌธ์ œ์—๋Š” ์กฐ๊ฑด์ด ์ด๋ ‡๊ฒŒ ์žˆ๋‹ค.

  1. left์ด์ƒ right ์ดํ•˜ ์ˆœ์„œ์˜ ์ˆซ์ž๋งŒ ๋‹ด์„๊ฒƒ.
  2. ๋„ฃ์„ ์ˆซ์ž๋Š” i์™€ j์ค‘์— ํฐ ๊ฒƒ(์— +1)์œผ๋กœ ํ• ๊ฒƒ.

์—ฌ๊ธฐ์„œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋Š” ์•ž์˜ ์กฐ๊ฑด์„ ๊ฐ„๊ณผํ–ˆ๋‹ค.
์•ž์œผ๋กœ ์ด๋ ‡๊ฒŒ ๋ฒ”์œ„ ์ œํ•œ์ด ์žˆ๋Š” ๋ฌธ์ œ๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ์‹ ๊ฒฝ์จ์•ผ ํ•œ๋‹ค๋Š” ๋ฌธ์ œ๋กœ ๋ด์•ผ๊ฒ ๋‹ค.