https://leetcode.com/problems/simplify-path/description/
코드설명
구현(Implementation) + 문자열(String) 를 활용합니다.
문제에 주어진대로 구현하면 되는 문제였지만, 그 구현에서 가장 빠르게 이해해서 구현하는가가 항상 중요합니다.
먼저, 문제를 보면 "/" 가 아닌, "//" 혹은 "////..." 는 IGNORE 하라는 요구사항이 있습니다.
그에 맞춰서, 그러면 "/" 가 하나 나온뒤, "//" 가 연속으로 모두 나오는지 확인해야할까?라는 생각이 듭니다.
하지만, Split을 활용할경우 반드시 "/"를 기준으로 나뉘기에 바로 구현이 간단해집니다.
또 Split한뒤 값들이 == 0 이거나 "." 로 이루어져있는경우는 PASS하고,
".."인 경우 현재 Path를 하나 제거해주면 됩니다.
그 외에는 모두 해당 경로에 "/" + Path 로 더해줍니다.
코드
class Solution { public String simplifyPath(String path) { StringBuilder sb = new StringBuilder(path); // if(sb.charAt(0) != '/') sb.deleteCharAt(0); // if(sb.charAt(sb.length() - 1) == '/') sb.deleteCharAt(sb.length() - 1); String[] split = sb.toString().split("/"); List<String> arr = new ArrayList<>(); for(String v : split){ if(v.length() == 0 || v.equals(".")) { continue; } else if(v.equals("..")){ if(arr.size() > 0) arr.remove(arr.size() - 1); }else { arr.add("/"+v); } } sb = new StringBuilder(); if(arr.size() == 0) return "/"; for(String v: arr){ sb.append(v); System.out.println(v); } return sb.toString(); } }
'알고리즘 > LeetCode' 카테고리의 다른 글
[LeetCode] 128. Longest Consecutive Sequence - 해시셋(HashSet) JAVA (0) | 2024.12.11 |
---|---|
[LeetCode] 98. Validate Binary Search Tree - 이진탐색트리(Binary Search Tree) JAVA (0) | 2024.12.11 |
[LeetCode] 72. Edit Distance - 깊이우선탐색(DFS) JAVA (0) | 2024.12.04 |
[LeetCode] 78. Subsets - 비트마스킹(BitMask) JAVA (0) | 2024.12.04 |
[LeetCode] 73. Set Matrix Zeroes - 구현(Implementation) JAVA (0) | 2024.12.04 |