스택의 개념을 이해하면 쉽게 풀이가 가능한 문제이다.
/
를 기준으로 split
하게되면, 중복된 /
를 효과적으로 제거할 수 있고 배열 요소를 순회하며 상위 이동과 디렉터리 이동만 판단하면 완료된다.
function simplifyPath(path: string): string {
const parts = path.split('/');
const stack = [];
for (const part of parts) {
// 현재 경로 및 '//', '///' 과 같은 경우 생략
if (part === '' || part === '.') continue
if (part === '..') {
// 상위로 이동하므로 pop
stack.pop();
} else {
// 디렉터리 이므로 push
stack.push(part);
}
}
return '/' + stack.join('/');
}