ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ๋ฌธ์ œ 85. ์ˆซ์ž๋†€์ด(์ˆซ์ž ๋ˆ„์ ์‹œํ‚ค๊ธฐ)
    ๐Ÿง  codingtest/javascript 100์ œ 2022. 4. 26. 06:48
    728x90

     

     

    • ์ด์ „ ์ˆซ์ž์—์„œ ๊ฐ ์ˆซ์ž์˜ ๊ฐœ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด์–ด ์ˆซ์ž๋กœ ๋งŒ๋“ค๊ณ  ๋‹ค์‹œ ๊ทธ ์ˆซ์ž๋ฅผ ๊ฐ™์€ ๊ทœ์น™์œผ๋กœ ๋งŒ๋“ค๋ฉฐ ๋‚˜์—ดํ•จ

    1๋ถ€ํ„ฐ ์‹œ์ž‘๋˜๋Š” ๋†€์ด

    1. 1 -> (1)
    2. 11 -> (1์ด 1๊ฐœ)
    3. 12 -> (1์ด 2๊ฐœ)
    4. 1121 -> (1์ด 1๊ฐœ 2๊ฐ€ 1๊ฐœ)
    5. 1321 -> (1์ด 3๊ฐœ 2๊ฐ€ 1๊ฐœ)
    6. 122131 -> (1์ด 2๊ฐœ 2๊ฐ€ 1๊ฐœ 3์ด 1๊ฐœ)
    7. 132231 -> (1์ด 3๊ฐœ 2๊ฐ€ 2๊ฐœ 3์ด 1๊ฐœ)

     

     

    • ์œ„์™€ ๊ฐ™์ด ์ง„ํ–‰๋˜๋Š” ๊ทœ์น™์„ ํ†ตํ•ด ์ง„ํ–‰ํšŸ์ˆ˜ N์„ ์ž…๋ ฅ ๋ฐ›์œผ๋ฉด ํ•ด๋‹น๋˜๋Š” ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ด ๋ณด์ž
    // ์ž…๋ ฅ
    6;
    
    // ์ถœ๋ ฅ
    122131;

     

     

     

    ๋ฏธ๋ฆฌ ์ƒ๊ฐํ•ด ๋ด์•ผํ•  ๊ฒƒ

    • ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณต์‹์„ ์ด์šฉํ•ด๋ณด์ž
    // result์— 100๊นŒ์ง€์˜ string ์ˆซ์ž๊ฐ’์„ ๋ˆ„์ ํ•ด์ฃผ์ž
    let result = "";
    for (let i = 1; i <= 100; i++) {
      result += i;
    }
    
    console.log(result);
    // 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
    
    // ์ •๊ทœํ‘œํ˜„์‹ ๊ทœ์น™์œผ๋กœ ์ „์—ญ์— 8 ๊ฐ’์„ ์ถ”์ถœํ•˜์—ฌ ๊ธธ์ด๋ฅผ ํ™˜์‚ฐํ•ด์คŒ
    let re = new RegExp(8, "g");
    console.log(result.match(re).length);
    
    // 20

     

     

     

    ๋‹ต

    function solution(n) {
      let answer = "1";
      if (n === 1) {
        return 1;
      }
      for (let i = 1; i < n; i++) {
        console.log(answer);
        answer = rule(answer); // ์ฝœ๋ฐฑํ•จ์ˆ˜ rule์— ๋งค๊ฐœ๋ณ€์ˆ˜ answer๋ฅผ ๋‹ด๋Š”๋‹ค.
      }
    
      return answer;
    }
    
    // ๋ˆ„์ ๋˜๋Š” ๊ฐ๊ฐ์˜ ์š”์†Œ๋“ค์— ๋Œ€ํ•˜์—ฌ
    function rule(answer) {
      let answerMax = 9; // ์‹ญ์ง„๋ฒ•์œผ๋กœ ๋‚˜ํƒ€๋‚ผ๊ฒƒ์ด๊ธฐ์— 9๋กœ ํ‘œ๊ธฐํ•ด์คŒ
      let result = "";
    
      for (let i = 1; i < answerMax; i++) {
        let re = new RegExp(i, "g");
        let count = (answer.match(re) || []).length;
    
        if (count >= 1) {
          result = result + String(i) + String(count);
        }
      }
      return result;
    }
    
    let num = 7;
    console.log(solution(num));

    ๋Œ“๊ธ€