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๊ฐ๊ฐ ์๊ฐ์ด๊ณผ๋ฅผ ์คํจํ๋ค.
๋ฐ๋ณต๋ฌธ ์ค์ฒฉ์ผ๋ก ์ธํ ์ ๋ณต์ก๋๊ฐ ๋ฌธ์ ์ธ๊ฑฐ ๊ฐ๋ค.
์๋ฌด๋ฆฌ 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
๋ฐฐ์ด์ ์ถ๊ฐ ํ๋๊ฒ.
๋ฌธ์ ์๋ ์กฐ๊ฑด์ด ์ด๋ ๊ฒ ์๋ค.
- left์ด์ right ์ดํ ์์์ ์ซ์๋ง ๋ด์๊ฒ.
- ๋ฃ์ ์ซ์๋ i์ j์ค์ ํฐ ๊ฒ(์ +1)์ผ๋ก ํ ๊ฒ.
์ฌ๊ธฐ์ ์ฐ์ฐ ํ์๋ฅผ ์ค์ผ ์ ์๋ ์์ ์กฐ๊ฑด์ ๊ฐ๊ณผํ๋ค.
์์ผ๋ก ์ด๋ ๊ฒ ๋ฒ์ ์ ํ์ด ์๋ ๋ฌธ์ ๋ ์๊ฐ๋ณต์ก๋๋ฅผ ์ ๊ฒฝ์จ์ผ ํ๋ค๋ ๋ฌธ์ ๋ก ๋ด์ผ๊ฒ ๋ค.