โญ๏ธ ์๊ณ ๋ฆฌ์ฆ(11) : ์ด์ํ ๋ฌธ์ ๋ง๋ค๊ธฐ _ Lv.1 โญ๏ธ
01. ๋ฌธ์ ์ค๋ช
๐งฉ ๋ฌธ์์ด s๋ ํ ๊ฐ ์ด์์ ๋จ์ด๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๊ฐ ๋จ์ด๋ ํ๋ ์ด์์ ๊ณต๋ฐฑ๋ฌธ์๋ก ๊ตฌ๋ถ๋์ด ์์ต๋๋ค.
๐งฉ ๋จ์ด์ ์ง์๋ฒ์งธ ์ํ๋ฒณ์ ๋๋ฌธ์๋ก, ํ์๋ฒ์งธ ์ํ๋ฒณ์ ์๋ฌธ์๋ก ๋ฐ๊พผ ๋ฌธ์์ด์ ๋ฆฌํดํ๋ ํจ์, solution์ ์์ฑํ์ธ์.
๐งฉ ์๋ฅผ ๋ค์ด "try hello world"๋ ์ธ ๋จ์ด "try", "hello", "world"๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค.
๐งฉ - ๊ฐ ๋จ์ด์ ์ง์๋ฒ์งธ ๋ฌธ์๋ฅผ ๋๋ฌธ์๋ก, ํ์๋ฒ์งธ ๋ฌธ์๋ฅผ ์๋ฌธ์๋ก ๋ฐ๊พธ๋ฉด "TrY", "HeLlO", "WoRlD"์
๋๋ค.
๐งฉ - ๋ฐ๋ผ์ "TrY HeLlO WoRlD" ๋ฅผ ๋ฆฌํดํฉ๋๋ค.
๐ ์ ํ ์กฐ๊ฑด : โ๏ธ ๋ฌธ์์ด ์ ์ฒด์ ์ง/ํ์ ์ธ๋ฑ์ค๊ฐ ์๋๋ผ, ๋จ์ด(๊ณต๋ฐฑ์ ๊ธฐ์ค)๋ณ๋ก ์ง/ํ์ ์ธ๋ฑ์ค๋ฅผ ํ๋จํด์ผํฉ๋๋ค.
โ๏ธ ์ฒซ ๋ฒ์งธ ๊ธ์๋ 0๋ฒ์งธ ์ธ๋ฑ์ค๋ก ๋ณด์ ์ง์๋ฒ์งธ ์ํ๋ฒณ์ผ๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค.
02. " solution.js " ๋ฌธ์ ํ์ด๋ณด๊ธฐ
๐ก ๋ฌธ์์ด์ ์ธ๋ฑ์ค ๊ฐ์ด ์ง์์ผ ๋ ๋๋ฌธ์๋ก, ํ์์ผ ๋ ์๋ฌธ์๋ก ๋ฐ๊ฟ์ฃผ๊ณ , ๊ณต๋ฐฑ์ด ์๊ธฐ๋ฉด ์ธ๋ฑ์ค ๊ฐ์ 0์ผ๋ก ๋ง๋๋ ๊ฒ์ ๋ฐ๋ณต์์ผ๋ณด์.
function solution(s) {
let answer = '';
let index = 0;
for (let spelling of s) {
answer += (index % 2 === 0) ? spelling.toUpperCase() : spelling.toLowerCase();
index += 1;
if (spelling === ' ') index = 0;
}
return answer;
}
console.log(solution("try hello world"))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 for๋ฌธ : ๊ดํธ ์์ ์์ ๋ฐ๋ณต ์คํํฉ๋๋ค.
`2 String.prototype.toUpperCase( ) : ๋ฌธ์์ด์ ๋๋ฌธ์๋ก ๋ณํํด ๋ฐํํฉ๋๋ค.
`3 String.prototype.toLowerCase( ) : ๋ฌธ์์ด์ ์๋ฌธ์๋ก ๋ณํํด ๋ฐํํฉ๋๋ค.
03. ๋ค๋ฅธ ํ์ด ์์๋ณด๊ธฐ
# 1) replace( )์ ์ ๊ทํํ์ ํ์ฉํ๊ธฐ
function solution(s){
// (\w)(\w) ์ฐ์๋ ๋ ๋ฌธ์
return s.toUpperCase().replace( /(\w)(\w)/g, function(a){ return a[0].toUpperCase() + a[1].toLowerCase(); } )
}
console.log(solution("try hello world"))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 String.prototype.replace( ) : ์ด๋ค ํจํด์ ์ผ์นํ๋ ์ผ๋ถ ๋๋ ๋ชจ๋ ๋ถ๋ถ์ ์๋ก์ด ๋ฌธ์์ด๋ก ๊ต์ฒดํ์ฌ ๋ฐํํฉ๋๋ค.
`2 ์ ๊ท ํํ์ : ๋ฌธ์์ด์์ ํน์ ๋ฌธ์ ์กฐํฉ์ ์ฐพ๊ธฐ ์ํ ํจํด์
๋๋ค.
JavaScript์์๋ ์ ๊ท ํํ์๋ ๊ฐ์ฒด์ ํฌํจ๋ฉ๋๋ค. RegExp์ exec( )์ test( ) ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทํํ์์ ๋ง๋ค ์ ์์ต๋๋ค.
# 2) split( )๊ณผ parseInt( ), slice( ) ํ์ฉํ๊ธฐ
function solution(s){
let result = "";
for(let word of s.split(" ")) {
for(let i in word) {
result += word[i][parseInt(i) % 2 == 0 ? "toUpperCase" : "toLowerCase"]();
}
result += " ";
};
return result.slice(0, -1);
}
console.log(solution("try hello world"))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 String.prototype.split( ) : ๋ถํ ๊ธฐ์ค์ ๋ฐ๋ผ ๋ฌธ์์ด์ ๋ถํ ํ์ฌ ๋ฐฐ์ด๋ก ๋ฐํํฉ๋๋ค.
`2 parseInt( ) : ๋ฌธ์์ด ์ธ์๋ฅผ ์ซ์๋ก ๋ณ๊ฒฝํ์ฌ ๋ฐํํฉ๋๋ค. Number( )์ ๊ฐ์ ๊ธฐ๋ฅ์ ํ๋ฉฐ,
์ฐจ์ด์ ์ ์ดํด๋ณด์๋ฉด Number( )์ ๋ฌธ์์ด์ ์ซ์๊ฐ ์๋ ๋ฌธ์๊ฐ ์์ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด NaN ๊ฐ์ด ์ ์ฅ๋๊ณ
parseInt( )๋ ๋ฌธ์์ด์ด ์ซ์๋ก ์์ํ๊ณ ๋ฌธ์๊ฐ ๊ปด์์ ๊ฒฝ์ฐ ๋ฌธ์ ์ ๊น์ง๋ง ์ซ์๋ก ํ๋ณํ ํ ์ ์ฅ๋๋ค๋ ๊ฒ.
`3 String.prototype.slice( ) : ๋ฌธ์์ด์ ์ผ๋ถ๋ฅผ ์ถ์ถํ๋ฉด์ ์๋ก์ด ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค.
๋ฌธ๋ฒ โ str.slice(beginIndex, endIndex)
0๋ถํฐ ์์ํ๋ ์ถ์ถ ์์์ ์ธ index๋ถํฐ ์ถ์ถ ์ข
๋ฃ์ ์ธ๋ฑ์ค์ ์ง์ ๊น์ง ์ถ์ถ๋ฉ๋๋ค.
# 3) split( )๊ณผ map( ), join( ) ํ์ฉํ๊ธฐ
function solution(s) {
return s.split(' ').map((a) => {
return a.split('').map((b, i) => {
return (i % 2 === 0) ? b.toUpperCase() : b.toLowerCase();
}).join('');
}).join(' ');
}
// ์์ ์์ ํ ์ค๋ก ํํํ๋ฉด,
// let solution = s => s.split(' ').map(el => el.split('').map((e,i) => i % 2 ? e.toLowerCase() : e.toUpperCase()).join('')).join(' ');
console.log(solution("try hello world"))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 Array.prototype.map( ) : ๋ฐฐ์ด ๋ด์ ๋ชจ๋ ์์ ๊ฐ๊ฐ์ ๋ํด, ์ฃผ์ด์ง ํจ์๋ฅผ ํธ์ถํ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด์ ๋ฐํํฉ๋๋ค.
`2 Array.prototype.join( ) : ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ๊ฒฐํฉํ์ฌ ํ๋์ ๋ฌธ์์ด๋ก ๋ฐํํฉ๋๋ค.
๋ฐํ๊ฐ์ผ๋ก ๋์ค๋ ๋ฌธ์์ด์ ๊ตฌ๋ถ์(๋์ด์ฐ๊ธฐ, ํน์๋ฌธ์, - ๋ค์, ๋ฑ)์ ์ง์ ํ ์ ์์ต๋๋ค.
# 4) for๋ฌธ๊ณผ ์ผํญ์ฐ์ฐ์ ํ์ฉํ๊ธฐ
function solution(s){
let result ="";
let even = false;
for(let i = 0; i < s.length; i ++) {
even = (even == true || s[i] == " ") ? false : true;
result += (even == true) ? s[i].toUpperCase() : s[i].toLowerCase();
}
return result;
}
console.log(solution("try hello world"))
___ ์ฐธ๊ณ ํ๊ธฐ ___
`1 ์กฐ๊ฑด(์ผํญ) ์ฐ์ฐ์ : ์์์๋ถํฐ ์กฐ๊ฑด๋ฌธ, ๋ฌผ์ํ(?), ์กฐ๊ฑด๋ฌธ์ด ์ฐธ(truthy)์ผ ๊ฒฝ์ฐ ์คํํ ํํ์, ์ฝ๋ก (:), ์กฐ๊ฑด๋ฌธ์ด ๊ฑฐ์ง(falsy)์ผ ๊ฒฝ์ฐ ์คํํ ํํ์์ด ๋ฐฐ์น๋ฉ๋๋ค.
'Algorithm_JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๊ณ ๋ฆฌ์ฆ(13) : ์ ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์นํ๊ธฐ _ Lv.1 (4) | 2022.11.08 |
---|---|
์๊ณ ๋ฆฌ์ฆ(12) : ํธ๋ํฐ ๋ฒํธ ๊ฐ๋ฆฌ๊ธฐ _ Lv.1 (2) | 2022.11.07 |
์๊ณ ๋ฆฌ์ฆ(10) : ์๋ฆฟ์ ๋ํ๊ธฐ _ Lv.1 (1) | 2022.11.06 |
์๊ณ ๋ฆฌ์ฆ(9) : ๋๋จธ์ง๊ฐ 1์ด ๋๋ ์ ์ฐพ๊ธฐ _ Lv.1 (4) | 2022.11.04 |
์๊ณ ๋ฆฌ์ฆ(8) : ์์ธ์์ ๊น์๋ฐฉ ์ฐพ๊ธฐ _ Lv.1 (1) | 2022.11.03 |
๋๊ธ