๋ฌธ์ ๋งํฌ
์ฝ๋ฉํ ์คํธ ์ฐ์ต - n^2 ๋ฐฐ์ด ์๋ฅด๊ธฐ
์ ์ n, left, right๊ฐ ์ฃผ์ด์ง๋๋ค. ๋ค์ ๊ณผ์ ์ ๊ฑฐ์ณ์ 1์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค๊ณ ์ ํฉ๋๋ค. nํ n์ด ํฌ๊ธฐ์ ๋น์ด์๋ 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ญ๋๋ค. i = 1, 2, 3, ..., n์ ๋ํด์, ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํฉ๋๋ค. 1ํ 1์ด๋ถ
programmers.co.kr
์ ๊ทผ ๋ฐฉ๋ฒ
์ฒ์์๋ ๋ฌธ์ ์์ ์น์ ํ๊ฒ ๊ฐ์ผํ๋ ๋ฐฉํฅ์ ํ๋์ฉ ์๋ ค์ฃผ์ด์
์์งํ๊ฒ ๋ฐ๋ผ ํ์๋ค..
ํ์ง๋ง 1 <= n <= 10^7 ์ด๋ผ๋ ๋ฒ์์ด๊ธฐ ๋๋ฌธ์
2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค์ด ๊ฐ์ ์ฑ์ด O(n^2)์ ์๊ฐ๋ณต์ก๋๋ ํต๊ณผํ ์ ์์๋ค.
๋๋ฌธ์ left์ right๊ฐ 2์ฐจ์ ํ๋ ฌ์์ ์ด๋ค ์์น์ ์๋์ง ํจํด์ ์ฐพ์์ผ ํ๋ค.
n = 3, left = 2, right = 5
1 2 3
2 2 3
3 3 3 => 1 2 3 2 2 3 3 3 3
n = 4, left = 7, right = 14 ์ผ๋
1 2 3 4
2 2 3 4
3 3 3 4
4 4 4 4 => 1 2 3 4 2 2 3 4 3 3 3 4 4 4 4 4
์ง์ ๊ทธ๋ ค๋ณด๋ ํจํด์ด ๋์ ๋ณด์ธ๋ค.
left => left / n ํ, left % n ์ด
right => right / n ํ, right % n์ด
์ฆ, ๋๋ค /n, %n์ผ๋ก ์ขํ๋ฅผ ๊ตฌํ ์ ์๋ค.
2์ฐจ ํ๋ ฌ์์ ์ขํ์ ๊ฐ์ Math.max(x, y) + 1๋ก ๋ํ๋ผ ์ ์์ผ๋ ์ด์ ๋ต์ ๊ตฌํ ์ ์๋ค.
// ํจํด์ ์ฐพ์ ํ์ดํ ์ฝ๋
function solution(n, left, right) {
var answer = []
while(left <= right){
answer.push(Math.max(Math.floor(left / n) , left % n) + 1);
left++;
}
return answer
}
// ํ๋ ฌ์ ๋ง๋ค์ด ํผ ์ฝ๋
function solution(n, left, right) {
const arr = new Array(n).fill(0).map(() => Array(n))
for(let i = 0; i < n; i++){
for(let j = 0; j < n; j++){
arr[i][j] = Math.max(i, j) + 1;
}
}
const arrConcat = arr.reduce((acc,cur) => {
return acc.concat(cur);
});
return arrConcat.slice(left, right+1)
}
'์ฝ๋ฉํ ์คํธ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript] ์์ ๋์งํ (12985) (0) | 2022.06.24 |
---|---|
[Javascript] 3์ฐจ n์ง์ ๊ฒ์ (17687) (0) | 2022.06.24 |
[Javascript] 2๊ฐ ์ดํ๋ก ๋ค๋ฅธ ๋นํธ (77885) (0) | 2022.06.23 |
[Javascript] 1์ฐจ ๋ด์ค ํด๋ฌ์คํธ๋ง (17677) (0) | 2022.06.23 |
[Javascript] k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (92335) (0) | 2022.06.23 |