Daily LeetCode Challenge - 71. Simplify Path

Min Young Kim·2023년 4월 12일
0

algorithm

목록 보기
119/198

Problem From.

https://leetcode.com/problems/simplify-path/

오늘 문제는 어제 문제와 비슷하게 문자열이 주어졌을때, 그 문자열을 조건에 따라 수정해서 반환하는 문제였다.

absolute path 로 주어진 경로를 canonical path 로 수정하는 문제였는데, canonical path 는 아래와 같은 조건이 있었다.

  • path 는 '/' 로 시작한다.
  • 두개의 '/' 는 하나의 '/' 로 처리한다.
  • path 의 마지막은 '/' 로 끝나지 않는다.
  • path 는 오직 파일 경로만 가지고 있는다. (. 이나 .. 은 제외해야함)

어제 문제와 비슷하게 stack 을 사용하여 풀었는데, 먼저 주어진 문자열을 '/' 를 기준으로 분류하고 "." 과 일치하는 문자를 지워줬다.
그리고 ".." 가 나오면 스택을 하나 지워주고 나머지 문자가 나오면 stack 에 더해주었다.

마지막으로 stack 을 string 으로 바꾸면서 각각의 요소를 '/' 를 통해 나눠줄 수 있도록 만들었다.

import java.util.Stack

class Solution {
    fun simplifyPath(path: String): String {
        
        val stack = Stack<String>()
        
        for(x in path.split('/').filter { it.isNotEmpty() && it != "." }) {
            if(x == ".." && stack.isNotEmpty()) {
                stack.pop()
            }else if(x != "..") {
                stack.push(x)
            }
        }
        
        return "/" + stack.joinToString(separator = "/")
        
    }
}
profile
길을 찾는 개발자

0개의 댓글