โญ๏ธ ์๊ณ ๋ฆฌ์ฆ(5) : ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์๋ฐ์? _ Lv.1 โญ๏ธ
01. ๋ฌธ์ ์ค๋ช
๐งฉ ๊ธธ์ด๊ฐ n์ด๊ณ , "์๋ฐ์๋ฐ์๋ฐ์...."์ ๊ฐ์ ํจํด์ ์ ์งํ๋ ๋ฌธ์์ด์ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํ์ธ์.
๐งฉ ์๋ฅผ ๋ค์ด n์ด 4์ด๋ฉด "์๋ฐ์๋ฐ"์ ๋ฆฌํดํ๊ณ 3์ด๋ผ๋ฉด "์๋ฐ์"๋ฅผ ๋ฆฌํดํ๋ฉด ๋ฉ๋๋ค.
๐ ์ ํ ์กฐ๊ฑด : n์ ๊ธธ์ด 10,000์ดํ์ธ ์์ฐ์์
๋๋ค.
02. " solution.js " ๋ฌธ์ ํ์ด๋ณด๊ธฐ
๐ก ๋ฌธ์๊ฐ ๋ฐ๋ณต๋์์ ๋, ๋ฐ๋ณต๋ ๋ฌธ์์ด์ ๊ธธ์ด๊ฐ n์ด ๋๋๋ก ๋ถ๋ถ ์ถ๋ ฅํด๋ณด์.
function solution(n) {
return "์๋ฐ".repeat(n).substring(0, n);
}
console.log(solution(n))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 String.prototype.repeat( ) : ๋ฌธ์์ด์ ์ฃผ์ด์ง ํ์๋งํผ ๋ฐ๋ณตํด ๋ถ์ธ ์๋ก์ด ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค.
`2 String.prototype.substring( ) : string ๊ฐ์ฒด์ ์์ ์ธ๋ฑ์ค๋ก๋ถํฐ ์ข
๋ฃ ์ธ๋ฑ์ค ์ ๊น์ง ๋ฌธ์์ด์ ๋ถ๋ถ ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค.
03. ๋ค๋ฅธ ํ์ด ์์๋ณด๊ธฐ
# 1) slice( ) ํ์ฉํ๊ธฐ
let waterMelon = n => "์๋ฐ".repeat(n).slice(0, n);
console.log(waterMelon(n)) // ํ์ดํ ํจ์, function ์๋ต, ๊ดํธ ์๋ต, return ์๋ต
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 String.prototype.slice( ) : ๋ฌธ์์ด์ ์ผ๋ถ๋ฅผ ์ถ์ถํ๋ฉด์ ์๋ก์ด ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค.
๋ฌธ๋ฒ โ str.slice(beginIndex, endIndex)
0๋ถํฐ ์์ํ๋ ์ถ์ถ ์์์ ์ธ index๋ถํฐ ์ถ์ถ ์ข
๋ฃ์ ์ธ๋ฑ์ค์ ์ง์ ๊น์ง ์ถ์ถ๋ฉ๋๋ค.
# 2) for๋ฌธ ํ์ฉํ๊ธฐ
function waterMelon(n){
let result = "";
for(let i=0; i<n; i++) {
result += i % 2 == 0 ? "์" : "๋ฐ";
}
return result;
}
console.log(waterMelon(n))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 for๋ฌธ : ๊ดํธ ์์ ์์ ๋ฐ๋ณต ์คํํฉ๋๋ค.
# 3) repeat( )๊ณผ Math.ceil( ), substr( ) ํ์ฉํ๊ธฐ
function waterMelon(n){
return "์๋ฐ".repeat( Math.ceil(n) ).substr(0, n);
}
console.log(waterMelon(n))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 Math.ceil( ) : ์ฃผ์ด์ง ์ซ์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ ์ซ์ ์ค ๊ฐ์ฅ ์์ ์ซ์๋ฅผ integer ๋ก ๋ฐํํฉ๋๋ค. โ ์ฌ๋ฆผ
`2 String.prototype.substr( ) : ์์ ์์น๋ถํฐ ๊ธธ์ด๊ฐ ๋งํผ์ ๋ฌธ์์ด์ ์ถ์ถํ์ฌ ๋ฐํํฉ๋๋ค. โ ์น ํ์ค์์ ์์ด์ก์ผ๋ ์์ง ์ฌ์ฉ ๊ฐ๋ฅํฉ๋๋ค.
# 4) while๋ฌธ ํ์ฉํ๊ธฐ
function waterMelon(n){
let result = "",
x = n;
while(n--){
result += ( x - n ) % 2 == 0 ? '๋ฐ':'์';
}
return result;
}
console.log(waterMelon(n))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 while๋ฌธ : ์กฐ๊ฑด๋ฌธ์ด ์ฐธ์ผ ๋ ์คํ๋๋ ๋ฐ๋ณต๋ฌธ์
๋๋ค.
๋ฐ๋ณต ์์ ์ ์ ์กฐ๊ฑด๋ฌธ์ด ์ฐธ, ๊ฑฐ์ง์ ํ๋จ๋ฐ์ผ๋ฏ๋ก, ์กฐ๊ฑด๋ฌธ์ด ๊ฑฐ์ง์ผ ๊ฒฝ์ฐ, ๋ฌธ์ฅ์ while ๋ฐ๋ณต๋ฌธ ํ๋ก ๊ทธ๋ฅ ๋์ด๊ฐ๋๋ค.
# 5) for๋ฌธ๊ณผ push( ), join( ) ํ์ฉํ๊ธฐ
function waterMelon(n){
let arr = [];
const su = '์';
const bak = '๋ฐ';
for(let i=0; i<n; i+=1){
if ( i % 2 === 0 ){
arr.push(su);
} else {
arr.push(bak);
}
}
let fruit = arr.join('');
return fruit;
}
console.log(waterMelon(n))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 Array.prototype.push( ) : ๋ฐฐ์ด์ ๋์ ํ๋ ์ด์์ ์์๋ฅผ ์ถ๊ฐํ๊ณ , ๋ฐฐ์ด์ ์๋ก์ด ๊ธธ์ด๋ฅผ ๋ฐํํฉ๋๋ค.
`2 Array.prototype.join( ) : ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ๊ฒฐํฉํ์ฌ ํ๋์ ๋ฌธ์์ด๋ก ๋ฐํํฉ๋๋ค.
๋ฐํ๊ฐ์ผ๋ก ๋์ค๋ ๋ฌธ์์ด์ ๊ตฌ๋ถ์(๋์ด์ฐ๊ธฐ, ํน์๋ฌธ์, - ๋ค์, ๋ฑ)์ ์ง์ ํ ์ ์์ต๋๋ค.
# 6) key๊ฐ๊ณผ map( ), join( ) ํ์ฉํ๊ธฐ
function waterMelon(n){
return [...Array(n).keys()].map( i => {
if (i % 2 === 0) return "์";
else return "๋ฐ";
}).join('');
}
console.log(waterMelon(n))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 ...Array(n) : ํผ์นจ ์ฐ์ฐ์ โ ๋ฐฐ์ด ๋ณต์ฌ
`2 Array.prototype.keys( ) : ๋ฐฐ์ด์ ๊ฐ ์ธ๋ฑ์ค๋ฅผ ํค ๊ฐ์ผ๋ก ๊ฐ์ง๋ ์๋ก์ด Array Iterator ๊ฐ์ฒด๋ฅผ ๋ฐํํฉ๋๋ค.
`3 Array.prototype.map( ) : ๋ฐฐ์ด ๋ด์ ๋ชจ๋ ์์ ๊ฐ๊ฐ์ ๋ํด, ์ฃผ์ด์ง ํจ์๋ฅผ ํธ์ถํ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
'Algorithm_JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ(7) : ๊ฐ์ด๋ฐ ๊ธ์ ๊ฐ์ ธ์ค๊ธฐ _ Lv.1 (3) | 2022.11.03 |
---|---|
์๊ณ ๋ฆฌ์ฆ(6) : ๋ฌธ์์ด์ ์ ์๋ก ๋ฐ๊พธ๊ธฐ _ Lv.1 (2) | 2022.11.02 |
์๊ณ ๋ฆฌ์ฆ(4) : ์ง์์ ํ์ _ Lv.1 (1) | 2022.10.31 |
์๊ณ ๋ฆฌ์ฆ(3) : ํ๊ท ๊ตฌํ๊ธฐ _ Lv.1 (2) | 2022.10.31 |
์๊ณ ๋ฆฌ์ฆ(2) : ์ ์ผ ์์ ์ ์ ๊ฑฐํ๊ธฐ _ Lv.1 (1) | 2022.10.31 |
๋๊ธ