Simplify Path

zoovely·2024년 6월 10일
0
post-thumbnail

💬 문제

[문제 링크]

파일 시스템 경로를 문자열로 나타낸 path
현재 디렉토리를 가리키는 .
상위 디렉토리로 이동하는 ..를 생략하고
여러개의 슬래시는 하나로 대치해서
간결해진 경로 문자열 반환

Input: path = "/.../a/../b/c/../d/./"
Output: "/.../b/d"

✍️ 나의 풀이

/**
 * @param {string} path
 * @return {string}
 */
var simplifyPath = function(path) {
    let paths = path.split('/');
    let stack = [];

    for (let i = 0; i < paths.length; i++) {
        if (paths[i] === '' || paths[i] === '.')
            continue ;
        if (paths[i] === '..')
            stack.pop();
        else
            stack.push(paths[i]);
    }

    return '/' + stack.join('/');

};

슬래시 기준으로 split하여 디렉토리 정보를 나타내 단어들을 배열로 저장
배열을 순회하면서 연속된 슬래시로 생기는 빈 문자열과
현재 디렉토리를 나타내는 .을 만나면 생략을 위해 다음으로 넘어감
..을 만나면 상위 디렉토리를 생략해야 하므로 stack에 저장된 디렉토리를 하나 지움
모두 아니라면 디렉토리 이름이므로 stack에 저장
root 경로를 위해 슬래시를 앞에 붙이고 stack을 다시 슬래시로 이어서 반환

📌 결과

Accepted
Runtime 59ms (Beats 53.50%)
Memory 50.12MB (Beats 95.13%)

📚 러닝 포인트

문제 읽고 조건이 많아서 살짝 쫄았는데 너무나도 빠르고 쉽게 풀어버렸다. stack을 사용해야 한다는 걸 기억하면서 해결하려고 했더니 잘 된듯. 자바스크립트의 간편한 함수들에 감사했던 문제였다.

profile
나도 할 수 있을까?

0개의 댓글