๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm_JS

์•Œ๊ณ ๋ฆฌ์ฆ˜(12) : ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ ๊ฐ€๋ฆฌ๊ธฐ _ Lv.1

by oranssy 2022. 11. 7.
728x90
๋ฐ˜์‘ํ˜•

โญ๏ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜(12) : ํ•ธ๋“œํฐ ๋ฒˆํ˜ธ ๊ฐ€๋ฆฌ๊ธฐ _ Lv.1 โญ๏ธ


01. ๋ฌธ์ œ ์„ค๋ช…

๐Ÿงฉ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ชจ๋ฐ”์ผ์€ ๊ฐœ์ธ์ •๋ณด ๋ณดํ˜ธ๋ฅผ ์œ„ํ•ด ๊ณ ์ง€์„œ๋ฅผ ๋ณด๋‚ผ ๋•Œ ๊ณ ๊ฐ๋“ค์˜ ์ „ํ™”๋ฒˆํ˜ธ์˜ ์ผ๋ถ€๋ฅผ ๊ฐ€๋ฆฝ๋‹ˆ๋‹ค.
๐Ÿงฉ ์ „ํ™”๋ฒˆํ˜ธ๊ฐ€ ๋ฌธ์ž์—ด phone_number๋กœ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ „ํ™”๋ฒˆํ˜ธ์˜ ๋’ท 4์ž๋ฆฌ๋ฅผ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์ˆซ์ž๋ฅผ ์ „๋ถ€ *์œผ๋กœ ๊ฐ€๋ฆฐ ๋ฌธ์ž์—ด์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.
๐Ÿงฉ ์˜ˆ๋ฅผ ๋“ค์–ด "01033334444"๋ฅผ ์ž…๋ ฅํ•˜๋ฉด "*******4444"๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
๐Ÿงฉ - "027778888"๋ฅผ ์ž…๋ ฅํ•˜๋ฉด "*****8888"๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
๐Ÿ”’ ์ œํ•œ ์กฐ๊ฑด : phone_number๋Š” ๊ธธ์ด 4 ์ด์ƒ, 20์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

02. " solution.js " ๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ

๐Ÿ’ก ๋ฌธ์ž์—ด ์ „์ฒด ๊ธธ์ด์—์„œ 4๋ฅผ ๋บ€๋งŒํผ '*'๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ๋„ฃ์–ด์ฃผ๊ณ , ๋ฌธ์ž์—ด์˜ ๋’ท 4์ž๋ฆฌ๋ฅผ ๋ถ™์—ฌ๋ณด์ž.

function solution(s) {
    return "*".repeat(s.length - 4) + s.slice(-4);
}
console.log(solution("01033334444"))
console.log(solution("027778888"))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   String.prototype.repeat( ) : ๋ฌธ์ž์—ด์„ ์ฃผ์–ด์ง„ ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•ด ๋ถ™์ธ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  `2   String.prototype.slice( ) : ๋ฌธ์ž์—ด์˜ ์ผ๋ถ€๋ฅผ ์ถ”์ถœํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
                                                     ๋ฌธ๋ฒ• โ˜› str.slice(beginIndex, endIndex)
                                                     0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ถ”์ถœ ์‹œ์ž‘์ ์ธ index๋ถ€ํ„ฐ ์ถ”์ถœ ์ข…๋ฃŒ์  ์ธ๋ฑ์Šค์˜ ์ง์ „๊นŒ์ง€ ์ถ”์ถœ๋ฉ๋‹ˆ๋‹ค.

03. ๋‹ค๋ฅธ ํ’€์ด ์•Œ์•„๋ณด๊ธฐ

# 1) replace( )์™€ ์ •๊ทœํ‘œํ˜„์‹ ํ™œ์šฉํ•˜๊ธฐ

function solution(s) {
    return s.replace(/\d(?=\d{4})/g, "*");
}
console.log(solution("01033334444"))
console.log(solution("027778888"))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   String.prototype.replace( ) : ์–ด๋–ค ํŒจํ„ด์— ์ผ์น˜ํ•˜๋Š” ์ผ๋ถ€ ๋˜๋Š” ๋ชจ๋“  ๋ถ€๋ถ„์„ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด๋กœ ๊ต์ฒดํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  `2   ์ •๊ทœ ํ‘œํ˜„์‹ : ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ๋ฌธ์ž ์กฐํ•ฉ์„ ์ฐพ๊ธฐ ์œ„ํ•œ ํŒจํ„ด์ž…๋‹ˆ๋‹ค.
                             JavaScript์—์„œ๋Š” ์ •๊ทœ ํ‘œํ˜„์‹๋„ ๊ฐ์ฒด์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. RegExp์˜ exec( )์™€ test( ) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๊ทœํ‘œํ˜„์‹์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

# 2) for๋ฌธ๊ณผ charAt( ) ํ™œ์šฉํ•˜๊ธฐ

function solution(s){
    let result = ""

    for(let i=0; i < s.length; i++){    
        result += i < s.length -4 ? "*" : s.charAt(i);           // ์ˆซ์ž์˜ ์œ ๋‹ˆ์ฝ”๋“œ ๊ฐ’์€ ์ˆซ์ž ๊ทธ๋Œ€๋กœ์˜ ๊ฐ’.
    }  
    return result;
}
console.log(solution("01033334444"))
console.log(solution("027778888"))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   for๋ฌธ : ๊ด„ํ˜ธ ์•ˆ์˜ ์‹์„ ๋ฐ˜๋ณต ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  `2   String.prototype.charAt( ) : ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•˜๋Š” ์œ ๋‹ˆ์ฝ”๋“œ ๋‹จ์ผ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

# 3) fill( )๊ณผ join( ) ํ™œ์šฉํ•˜๊ธฐ

const solution = n => [...n].fill( "*", 0, n.length -4 ).join("")
// ๋ฌธ์ž์—ด n ์„ ๋ฐฐ์—ด๋กœ ๋ณต์‚ฌํ•˜๊ณ , ๋ฐฐ์—ด์˜ ์ฒซ๋ฒˆ์งธ ์š”์†Œ๋ถ€ํ„ฐ ๋’ค์—์„œ 4๋ฒˆ์งธ ์š”์†Œ๊นŒ์ง€ "*"๋กœ ์ฑ„์šด ๋’ค์—, ํ•ฉ์ณ์„œ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜์‹œ์˜ค.

console.log(solution("01033334444"))
console.log(solution("027778888"))

   ___ ์ฐธ๊ณ ํ•˜๊ธฐ ___
  `1   Array.prototype.fill( ) : ๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋ ์ธ๋ฑ์Šค์˜ ์ด์ „๊นŒ์ง€ ์ •์ ์ธ ๊ฐ’ ํ•˜๋‚˜๋กœ ์ฑ„์›๋‹ˆ๋‹ค.
                                                ๋ฌธ๋ฒ• โ˜› arr.fill(value[, start[, end]])
                                                ์˜ˆ์‹œ โ˜› [1, 2, 3].fill(5); // [5, 5, 5]
  `2   (... ) : ํŽผ์นจ์—ฐ์‚ฐ์ž โ˜› ๋ฐฐ์—ด ๋ณต์‚ฌ
  `3   Array.prototype.join( ) : ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
                                                  ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ๋‚˜์˜ค๋Š” ๋ฌธ์ž์—ด์˜ ๊ตฌ๋ถ„์ž(๋„์–ด์“ฐ๊ธฐ, ํŠน์ˆ˜๋ฌธ์ž, - ๋‹ค์‹œ, ๋“ฑ)์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€