본문 바로가기
LeetCode

1678. Goal Parser Interpretation

by 싼쵸 2022. 6. 7.
반응형

문제

주어진 command를 활용해 규칙에 맞게 변환해서 답을 리턴한다.

G => G, () => o, (al) => al 이렇게 바꾸고 변환을 한다.

내 현재 풀이

/**
 * @param {string} command
 * @return {string}
 */
var interpret = function(command) {
    while(command.indexOf('()') > -1 || command.indexOf('(al)') > -1){
        command =command.replace('()','o')
        command = command.replace('(al)','al')
    }
return command
};

indexOf를 통해 '()', '(al)'가 안 나올 때까지 진행하기 위해 while문을 활용했다. 그리고  둘 중 하나라고 있으면 replace를 해야 되기 때문에 or 연산자를 활용했다.

 

내 예전 풀이

/**
 * @param {string} command
 * @return {string}
 */



let interpret = function(command) {
    return command.replaceAll('()','o').replaceAll('(al)','al')
    };

예전에는 replaceAll을 함수 활용해서 해결했는데, 이번에는 replace를 활용하고 replace는 먼저 나오는 문자만 적용을 하기 때문에 발생. 한 문제점을 or 연산자와 while를 통해 해결했다는 게 감명 깊다.

 

다른 사람 풀이

var interpret = function(command) {
    return command.split("()").join("o").split("(al)").join("al");
    
    //command.split('()')
(4) //['G', '', '', '(al)']
//command.join('o')
/'Gooo(al)'
O는 G와, '','','(al)'을 연결하기위해서 3개 나온다.
};

split과 join 함수를 활용해서 해결했다. 신박하다. 그러나 join 함수가 이해가 잘 안 갔으나, 구글링을 통해 이해했다.

join 함수는 배열의 모든 요소를 연결해 하나의 문자열로 만든다. 즉, 배열의 요소 join안에 인자로 넣은 요소로 연결해 문자열로 만든다는 이야기다.

 

 

참고 
replace, replacaAll 
MDN 사이트

 

반응형

댓글