๐ฆ Changgo/๐ ๋ญ? JS๋ก PS๋ฅผ ํ๋ค๊ณ ?
[ํ๋ก๊ทธ๋๋จธ์ค][JS / Javascript] n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ
์ ๋ฌ
2023. 5. 12. 23:21
๋ฐ์ํ
https://school.programmers.co.kr/learn/courses/30/lessons/87390
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
ํ์ด
์ฒ์์๋ ์๋์ ๊ฐ์ด ์ฝ๊ฒ ๊ตฌํํ์์ผ๋ ๋ช๋ช ํ ์คํธ์ผ์ด์ค์์ ๋ฐํ์์๋ฌ๊ฐ ๋ด๋ค
function solution(n, left, right) {
let ans = [];
for(let i=0; i<n; i++)
for(let j=0; j<n; j++)
ans.push((i>j ? i : j)+1);
return ans.slice(left, right+1);
}
์กฐ๊ฑด์ ๋ค์ ๋ณด๋ n์ ๊ฐ์ด ์๋นํ ํฌ๊ธฐ ๋๋ฌธ์ ์ต์ ํ๊ฐ ํ์ํด๋ณด์๊ณ ,
์ดํ ํ์ํ ๋ถ๋ถ๋ง ๋ฐ๋ณต๋ฌธ์ ๋๋๋ก ์ฝ๋๋ฅผ ๋ณ๊ฒฝํด์ฃผ์๋ค
function solution(n, left, right) {
let ans = [];
for(let i=Math.floor(left/n); i<=Math.floor(right/n); i++) {
for(let j=0; j<n; j++) {
ans.push((i>j ? i : j)+1);
}
}
for(let i=0; i<Math.floor(left%n); i++)
ans.shift();
for(let i=0; i<n - Math.floor(right%n) - 1; i++)
ans.pop();
return ans;
}
๊ทธ๋ฌ๋๋ ์ด์ ๋ ์๊ฐ์ด๊ณผ๊ฐ ๋๋ค.
O(n^2)๋ก๋ ๋์ ํ ์๋๋ ๊น๊นํ ๋ฌธ์ ๊ฐ์์ O(n)์ผ๋ก ๋ฐ๊ฟ์คฌ๋ค
function solution(n, left, right) {
let ans = [];
for(let x=left; x<=right; x++) {
let i = Math.floor(x/n);
let j = Math.floor(x%n);
ans.push((i>j ? i : j)+1);
}
return ans;
}
์ฑ๊ณต!
๋ฐ์ํ