
<아이디어>
문자열 path를 "/"를 기준으로 나누어야 하므로 String.split(), StringTokenizer, String.toChararray() 중 한 가지를 사용해아 한다. 그리고 /..이 있을 경우 전에 있던 경로에서 한칸 앞으로 가야 하는 문제가 있는데 Stack을 활용한다면 쉽게 해결 할 수 있다. 즉 Stack과 Tokenizer를 활용하여 문제에 답에 필요한 문자열 그룹을 확보하고
마지막으로 StringBuilder를 통해서 문자열 사이사이 "/"를 넣어 반환 한다.
<해답 코드>
import java.util.Stack;
import java.util.StringTokenizer;
class Solution {
// 시간 복잡도 O(n) 공간 복잡도 O(n)
public String simplifyPath(String path) {
Stack<String> stack = new Stack<>();
// Tokenizer는 split("/+")와 같이 구분되는 문자가 여러개 와도 감안 하여 분할 해준다.
StringTokenizer st = new StringTokenizer(path,"/");
StringBuilder ans = new StringBuilder();
while(st.hasMoreTokens()){
String tmp = st.nextToken();
if(tmp.equals("."))
continue;
else if(tmp.equals("..")) {
if (!stack.isEmpty())
stack.pop();
}
else
stack.add(tmp);
}
for (String s : stack) {
ans.append("/");
ans.append(s);
}
return ans.toString().equals("") ?"/":ans.toString();
}
}'PS > Medium' 카테고리의 다른 글
| 319. Bulb Switcher (Math) (0) | 2023.04.27 |
|---|---|
| 946. Validate Stack Sequences (Stack) (0) | 2023.04.13 |
| 2390. Removing Stars From a String (Stack) (0) | 2023.04.11 |
| 2300. Successful Pairs of Spells and Potions (이진 탐색) (0) | 2023.04.10 |
| 133. Clone Graph (bfs,dfs) (0) | 2023.04.08 |