JS์๊ณ ๋ฆฌ์ฆ | ๋ฑ์๊ตฌํ๊ธฐ (์ด์คfor๋ฌธ, Array.from)
๋ฌธ์
N(1<=N<=100)๋ช ์ ํ์์ ๊ตญ์ด์ ์๊ฐ ์ ๋ ฅ๋๋ฉด ๊ฐ ํ์์ ๋ฑ์๋ฅผ ์ ๋ ฅ๋ ์์๋๋ก ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ธ์. ๊ฐ์ ์ ์๊ฐ ์ ๋ ฅ๋ ๊ฒฝ์ฐ ๋์ ๋ฑ์๋ก ๋์ผ ์ฒ๋ฆฌํ๋ค. ์ฆ ๊ฐ์ฅ ๋์ ์ ์๊ฐ 92์ ์ธ๋ฐ 92์ ์ด 3๋ช ์กด์ฌํ๋ฉด 1๋ฑ์ด 3๋ช ์ด๊ณ ๊ทธ ๋ค์ ํ์์ 4๋ฑ์ด ๋๋ค.
์ ๋ ฅ์์ | 87 89 92 100 76
์ถ๋ ฅ์์ | 4 3 2 1 5
ํ์ด
์ด์ค for๋ฌธ์ ์ฌ์ฉํ๋ค. ๊ฐ์ ๋๊ฐ์ฉ ๋น๊ตํ๋ฉด์ ์กฐ๊ฑด์ ์ถฉ์กฑํ๋ฉด answer๋ฅผ ++ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
์ด์คfor๋ฌธ ๊ฐ๋
for(let i = 0; i < 5; i++){
for(let j = 0; j < arr.length; j++){
}
}
i = 0 ์ผ ๋, j๊ฐ 0๋ถํฐ arr.length ๊น์ง ๋๋ค.
i = 1 ์ผ ๋, j๊ฐ 0๋ถํฐ arr.length ๊น์ง ๋๋ค.
i = 2 ์ผ ๋, j๊ฐ 0๋ถํฐ arr.length ๊น์ง ๋๋ค.
i = 3 ์ผ ๋, j๊ฐ 0๋ถํฐ arr.length ๊น์ง ๋๋ค.
i = 4 ์ผ ๋, j๊ฐ 0๋ถํฐ arr.length ๊น์ง ๋๋ค.
์ฒ์์ ํผ ๋ฐฉ๋ฒ1
function solution(arr){
let answer = [];
let count = 1;
for(let i = 0; i < arr.length; i++){
for(let j = 0; j < arr.length; j++){
if(arr[j] > arr[i]) {
count++;
} else count = 0;
answer.push(count);
}
return answer;
}
}
let arr = [87, 89, 92, 100, 76];
console.log(solution(arr));
์ฒ์์ ํผ ๋ฐฉ๋ฒ2
const solution = (arr) => {
let answer = [];
for (let i = 0; i < arr.length; i++) {
let count = 0;
for (let j = 0; j < arr.length; j++) {
if (arr[i] < arr[j]) count++;
}
answer.push(count + 1);
}
return answer;
}
const arr = [87, 89, 92, 92, 76];
console.log(solution(arr));
ํ์ฌ๊ฐarr[i]์ด arr[j]๋ณด๋ค ์์ผ๋ฉด ์นด์ดํ ,
๋ด ๊ฐ์์ +1ํ ๊ฐ์ answer๋ฐฐ์ด์ ๋์ ํ๋ค.
๋ค๋ฅธ ํ์ด
1๋ก ์ด๊ธฐํ๋ 1์ฐจ์ ๋ฐฐ์ด์ answer์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋๋๋ค.
let n = arr.length;
let answer = Array.from({length:n}, ()=>1);
// Array.from์ผ๋ก ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ 1๋ก ๋ฐ๊ฟ์ฃผ์๋ค.
// [1, 1, 1, 1, 1]
function solution(arr){
let n = arr.length;
let answer = Array.from({length:n}, ()=>1);
for(let i = 0; i < n; i++){
for(let j = 0; j < n; j++){
if(arr[j] > arr[i]) answer[i]++;
// answer์ i๋ฒ์งธ ๊ฐ์ ++ ํด์ค๋ค.
// answer๋ ๋ฐฐ์ด์ด๋๊น answer๋ฐฐ์ด์ i๋ฒ์งธ์ ๋ฃ์ด์ ++ ํด์ค์ผํ๋ค.
}
}
return answer;
}
let arr = [87, 89, 92, 100, 76];
console.log(solution(arr));
์ฌ์ฉํ ๊ฐ๋
Array.from
๋ฐฐ์ด๊ฐ์ ๋ณ๊ฒฝํ์ฌ ์๋ก์ด ๋ฐฐ์ด ์์ฑ
์ ์ฌ๋ฐฐ์ด๊ฐ์ฒดarrayLike๋ ๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด๋ฅผ ์๊ฒ ๋ณต์ฌํด์ ์๋ก์ด Array ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค.
๋ฐฐ์ด๊ฐ ๊ฐ๊ฐ์ ์ํ๋ ์ฐ์ฐ์ ์ํํด์ ์๋ก์ด ๋ฐฐ์ด ์์ฑํ๊ธฐ
console.log(Array.from('foo'));
// expected output: Array ["f", "o", "o"]
console.log(Array.from([1, 2, 3], x => x + x));
// expected output: Array [2, 4, 6]
// ์ฝ๋ฐฑํจ์๋ก ํ์ดํ ํจ์ ์ฌ์ฉ