본문 바로가기

algorithm/codewars

[6kyu] Simple string expansion

문제설명

Description:

Consider the following expansion:

solve("3(ab)") = "ababab" -- "ab" repeats 3 times
solve("2(a3(b))" = "abbbabbb" -- "a3(b)" == "abbb" repeats twice.

Given a string, return the expansion of that string.

Input will consist of only lowercase letters and numbers in valid parenthesis. There will be no letters or 

numbers after the last closing parenthesis.

More examples in test cases.

Good luck!





나의 풀이

function solve(str){ let lastIndex = str.length-1; // search from last index let temp = ''; // variable to store processed string for(let i = lastIndex; i >= 0; i-=1){ if(str[i] === ')' || str[i] === '(') continue; // exempt parenthesis temp += Number.isInteger(+str[i]) ? temp.repeat(+str[i]-1) : str[i]; }// is it number ? if true, repeat the amount of number : if false, just add to variable return temp.split('').reverse().join(''); // reverse result }




느낀 점

다른사람의 풀이는 정규표현식으로 푼 풀이가 제법 많았다. 정규표현식은 아직 공부해본적이 없어서 잘 모른다. 이를 계기로 한 번 공부해봐야겠다. 처음엔 filter 메서드를 쓰려다가 문자열의 맨뒷쪽 인덱스부터 탐색해오려고 for문을 그대로 썼다. 

'algorithm > codewars' 카테고리의 다른 글

[6kyu] Highest Scoring  (0) 2018.02.13
[6kyu] Tribonacci sequence  (0) 2018.02.08
[7kyu] Homogenous array  (0) 2018.02.04
[6kyu] crashing boxes  (0) 2018.01.28
[6kyu] playing with digits  (0) 2018.01.28