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

Algorithm

[Algorithm] ์˜น์•Œ์ด(2)

๐Ÿ“‹ ๋ฌธ์ œ

๋จธ์“ฑ์ด๋Š” ํƒœ์–ด๋‚œ ์ง€ 11๊ฐœ์›” ๋œ ์กฐ์นด๋ฅผ ๋Œ๋ณด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ์นด๋Š” ์•„์ง "aya", "ye", "woo", "ma" ๋„ค ๊ฐ€์ง€ ๋ฐœ์Œ๊ณผ ๋„ค ๊ฐ€์ง€ ๋ฐœ์Œ์„ ์กฐํ•ฉํ•ด์„œ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐœ์Œ๋ฐ–์— ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์—ฐ์†ํ•ด์„œ ๊ฐ™์€ ๋ฐœ์Œ์„ ํ•˜๋Š” ๊ฒƒ์„ ์–ด๋ ค์›Œํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด ๋ฐฐ์—ด babbling์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๋จธ์“ฑ์ด์˜ ์กฐ์นด๊ฐ€ ๋ฐœ์Œํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด์˜ ๊ฐœ์ˆ˜๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • 1 ≤ babbling์˜ ๊ธธ์ด ≤ 100
  • 1 ≤ babbling[i]์˜ ๊ธธ์ด ≤ 30
  • ๋ฌธ์ž์—ด์€ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

["aya", "yee", "u", "maa"] 1
["ayaye", "uuu", "yeye", "yemawoo", "ayaayaa"] 2

 

โœ๏ธ ํ’€์ด

๋ฐ˜๋ณต๋˜์„œ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๊ณ  ๋‹จ์–ด๊ฐ€ ์ •ํ•ด์ ธ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •๊ทœํ‘œํ˜„์‹์„ ์ด์šฉํ•˜๋ฉด ํŽธํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

์ฒ˜์Œ์— ์ œ๋Œ€๋กœ ๋ณด์ง€ ๋ชปํ•œ ์กฐ๊ฑด๋ฌธ์ด ์žˆ์—ˆ๋Š”๋ฐ ๊ฐ™์€ ์˜น์•Œ์ด๊ฐ€ ๋‘๋ฒˆ ์ด์ƒ ๋ฐ˜๋ณต๋  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ์ด ์กฐ๊ฑด์„ ๋‚˜๋Š” replace๋ฅผ ์ด์šฉํ•ด์„œ ์ œ๊ฑฐํ•˜๊ธฐ ์ „์— repeat ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌธ์ž์—ด์„ ๋‘ ๋ฐฐ๋กœ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  ๋‘ ๋ฒˆ ๋ฐ˜๋ณต๋˜๋Š” ๋ฌธ์ž์—ด์ด ์žˆ๋Š”์ง€ match ๋ฉ”์„œ๋“œ๋กœ ํ™•์ธํ–ˆ๋‹ค. ์—†๋‹ค๋ฉด ๊ฐ€๋Šฅํ•œ ์˜น์•Œ์ด์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐ ๋ฐœ์Œ์„ "-" ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝํ–ˆ๋‹ค. ๋นˆ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  "-"๋กœ ๋ณ€๊ฒฝํ•œ ์ด์œ ๋Š” ํ•˜๋‚˜์˜ ๋ฐœ์Œ์„ ์ง€์› ์„ ๋•Œ ๋‹ค๋ฅธ ๋ฐœ์Œ์ด ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋งŒ์•ฝ "yayae"๋ผ๋Š” ๋ฌธ์ž๋ฅผ ํ™•์ธํ•  ๋•Œ "aya"๊ฐ€ ์ค‘์•™์— ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฅผ ์ง€์šฐ๋ฉด "ye"๊ฐ€ ๋˜์–ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒฐ๊ณผ๋ฅผ ๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ชจ๋“  ๋ฐœ์Œ์„ "-"๋กœ ์น˜ํ™˜ํ•˜๊ณ  "-"๋ฅผ ๋นˆ๋ฌธ์ž("")๋กœ ๋ณ€๊ฒฝํ–ˆ์„ ๋•Œ ์ตœ์ข…์ ์œผ๋กœ ๋นˆ ๋ฌธ์ž์—ด์ด ๋˜๋ฉด ๊ฐ€๋Šฅํ•œ ๋‹จ์–ด์ด๋ฏ€๋กœ answer๋ฅผ 1 ์ฆ๊ฐ€์‹œ์ผœ์ค€๋‹ค.

 

โŒจ๏ธ ์ฝ”๋“œ

function solution(babbling) {
  var answer = 0;
  const words = ['aya', 'ye', 'woo', 'ma'];

  for (const b of babbling) {
    let str = b;

    for (const word of words) {
      const checkRegex = new RegExp(word.repeat(2));
      if (b.match(checkRegex)) break;

      const regex = new RegExp(word, 'g');
      str = str.replace(regex, '-');
    }
    if (!str.replace(/-/g, '')) answer += 1;
  }

  return answer;
}