โญ๏ธ ์๊ณ ๋ฆฌ์ฆ(2) : ์ ์ผ ์์ ์ ์ ๊ฑฐํ๊ธฐ _ Lv.1 โญ๏ธ
01. ๋ฌธ์ ์ค๋ช
๐งฉ ์ ์๋ฅผ ์ ์ฅํ ๋ฐฐ์ด, arr์์ ๊ฐ์ฅ ์์ ์๋ฅผ ์ ๊ฑฐํ ๋ฐฐ์ด์ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํด์ฃผ์ธ์.
๐งฉ ๋จ, ๋ฆฌํดํ๋ ค๋ ๋ฐฐ์ด์ด ๋น ๋ฐฐ์ด์ธ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด์ -1 ์ ์ฑ์์ ๋ฆฌํดํ์ธ์.
๐งฉ ์๋ฅผ ๋ค์ด arr์ด [4,3,2,1]์ธ ๊ฒฝ์ฐ๋ [4,3,2]๋ฅผ ๋ฆฌํดํ๊ณ , [10]์ด๋ฉด [-1]์ ๋ฆฌํดํฉ๋๋ค.
๐ ์ ํ ์กฐ๊ฑด : โ๏ธ arr์ ๊ธธ์ด 1 ์ด์์ธ ๋ฐฐ์ด์
๋๋ค. โ๏ธ ์ธ๋ฑ์ค i, j ์ ๋ํด i ≠ j์ด๋ฉด arr[i] ≠ arr[j] ์
๋๋ค.
02. " solution.js " ๋ฌธ์ ํ์ด๋ณด๊ธฐ
๐ก ๊ฐ์ฅ ์์ ๊ฐ์ ์ฐพ๊ณ , ์ฐพ์ ์์๋ฅผ ์ญ์ ํ์ฌ ๋ฐํํด๋ณด์.
const erase = [4, 3, 2, 1];
function solution(arr) {
arr.splice( arr.findIndex( (a) => a == Math.min(...arr) ), 1 );
return arr.length <= 1 ? arr = [-1] : arr;
}
console.log(solution(erase))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 Array.prototype.splice( ) : ๋ฐฐ์ด์ ๊ธฐ์กด ์์๋ฅผ ์ญ์ ๋๋ ๊ต์ฒดํ๊ฑฐ๋ ์ ์์๋ฅผ ์ถ๊ฐํ์ฌ ๋ฐฐ์ด์ ๋ด์ฉ์ ๋ณ๊ฒฝํ์ฌ ๋ฐํํฉ๋๋ค.
`2 Array.prototype.findIndex( ) : ์ฃผ์ด์ง ํ๋ณ ํจ์๋ฅผ ๋ง์กฑํ๋ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์์์ ๋ํ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํฉ๋๋ค. ๋ง์กฑํ๋ ์์๊ฐ ์์ผ๋ฉด -1 ์ ๋ฐํํฉ๋๋ค.
`3 Math.min( ) : ์ฃผ์ด์ง ์ซ์๋ค ์ค ๊ฐ์ฅ ์์ ๊ฐ์ ๋ฐํํฉ๋๋ค.
`4 (... ) : ํผ์นจ์ฐ์ฐ์ โ ๋ฐฐ์ด ๋ณต์ฌ
03. ๋ค๋ฅธ ํ์ด ์์๋ณด๊ธฐ
# 1) Math.min( )๊ณผ filter( ), ์ผํญ ์ฐ์ฐ์ ํ์ฉํ๊ธฐ
const erase = [4, 3, 2, 1];
function solution(arr) {
const min = Math.min(...arr);
return arr.length !== 1 ? arr.filter( i => i !== min ) : [-1];
}
console.log(solution(erase))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 Array.prototype.filter( ) : ์ฃผ์ด์ง ํจ์์ ํ
์คํธ๋ฅผ ํต๊ณผํ๋ ๋ชจ๋ ์์๋ฅผ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค.
`2 ์กฐ๊ฑด(์ผํญ) ์ฐ์ฐ์ : ์์์๋ถํฐ ์กฐ๊ฑด๋ฌธ, ๋ฌผ์ํ(?), ์กฐ๊ฑด๋ฌธ์ด ์ฐธ(truthy)์ผ ๊ฒฝ์ฐ ์คํํ ํํ์, ์ฝ๋ก (:), ์กฐ๊ฑด๋ฌธ์ด ๊ฑฐ์ง(falsy)์ผ ๊ฒฝ์ฐ ์คํํ ํํ์์ด ๋ฐฐ์น๋ฉ๋๋ค.
# 2) apply( )์ indexOf( ), if๋ฌธ ํ์ฉํ๊ธฐ
const erase = [4, 3, 2, 1];
function solution(arr) {
let a = Math.min.apply( null, arr );
arr.splice( arr.indexOf(a), 1 );
if( arr[0] == undefined )
return [-1];
else
return arr;
}
console.log(solution(erase))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 Function.prototype.apply( ) : ์ฃผ์ด์ง this ๊ฐ๊ณผ ๋ฐฐ์ด๋ก ์ ๊ณต๋๋ arguments ๋ก ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.
๋ฌธ๋ฒ โ func.apply(thisArg, [argsArray])
Math.min( )์ argument์๋ ์ซ์๋ง ๋ค์ด๊ฐ ์ ์๊ธฐ ๋๋ฌธ์, arguments๊ฐ ๋ฐฐ์ด๋ก ์ด๋ฃจ์ด์ ธ ์์ ๊ฒฝ์ฐ์๋ Nan ๊ฐ์ ๋ฐํํฉ๋๋ค.
์ด๋ apply( )๋ฅผ ๋ถ์ฌ์ ํด๊ฒฐํ ์ ์์ต๋๋ค. apply( )๊ฐ ๋ ๋ฒ์งธ ์ธ์๋ก ๋ฐฐ์ด์ ๋ฐ๊ณ ๊ณ์ฐ์ ๊ฐ๋ฅํ๊ฒ ํด์ค๋๋ค.
Math.min( )์์๋ this ์ญํ ์ด ์๊ธฐ ๋๋ฌธ์ apply( )์ ์ฒซ ๋ฒ์งธ ์ธ์๋ก null์ ์ ์ด์ค๋๋ค.
`2 Array.prototype.indexOf( ) : ๋ฐฐ์ด์์ ์ง์ ๋ ์์๋ฅผ ์ฐพ์ ์ ์๋ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๊ณ , ์กด์ฌํ์ง ์์ผ๋ฉด -1์ ๋ฐํํฉ๋๋ค.
'Algorithm_JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ(6) : ๋ฌธ์์ด์ ์ ์๋ก ๋ฐ๊พธ๊ธฐ _ Lv.1 (2) | 2022.11.02 |
---|---|
์๊ณ ๋ฆฌ์ฆ(5) : ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์? _ Lv.1 (1) | 2022.10.31 |
์๊ณ ๋ฆฌ์ฆ(4) : ์ง์์ ํ์ _ Lv.1 (1) | 2022.10.31 |
์๊ณ ๋ฆฌ์ฆ(3) : ํ๊ท ๊ตฌํ๊ธฐ _ Lv.1 (2) | 2022.10.31 |
์๊ณ ๋ฆฌ์ฆ(1) : ์์ฐ์ ๋ค์ง์ด ๋ฐฐ์ด๋ก ๋ง๋ค๊ธฐ _ Lv.1 (4) | 2022.10.28 |
๋๊ธ