본문 바로가기

leetcode 문제 풀이

LeetCode 1598. Crawler Log Folder 자바 문제 풀이

반응형

LeetCode 1598. Crawler Log Folder 자바 문제 풀이

문제 설명

접근 방식

  • 아이디어: 주어진 로그를 순회하면서 디렉토리의 깊이를 추적합니다.
  • 알고리즘:
    1. 초기 깊이(depth)를 0으로 설정합니다.
    2. 각 로그를 순회하면서:
      • "./"일 경우 특별히 처리할 필요 없이 넘어갑니다.
      • "../"일 경우 현재 깊이(depth)가 0보다 크면 상위 디렉토리로 이동하므로 깊이를 하나 줄입니다.
        • 디렉토리는 0이하가 될수 없으므로, 0보다 클때만 깊이를 하나 줄입니다.
        • 그 외의 경우에는 새로운 디렉토리로 이동하므로 깊이를 하나 늘립니다.
          • else if 를 사용하여, ../가 아니고
          • !log.equals("./")를 사용하여, ./도 아닌경우
          • 모든 로그를 처리한 후 남은 깊이(depth)를 반환합니다.

코드

class Solution {
    public int minOperations(String[] logs) {
        int depth = 0;

        for (String log : logs) {
            if (log.equals("../")) {
                if (depth > 0) {
                    depth--;
                }
            } else if (!log.equals("./")) {
                depth++;
            }
        }

        return depth;
    }
}

결론

  • 시간 복잡도: 주어진 로그 배열을 한 번 순회하므로 O(n)입니다 (여기서 n은 로그 배열의 길이).
  • 공간 복잡도: 추가적인 공간을 사용하지 않으므로 O(1)입니다.
반응형