반응형
LeetCode 1598. Crawler Log Folder 자바 문제 풀이
문제 설명
- 문제: https://leetcode.com/problems/crawler-log-folder/description/
- 설명: 주어진 로그 배열을 기반으로 파일 시스템의 디렉토리 깊이를 계산합니다. "./"은 현재 디렉토리를 나타내고, "../"는 상위 디렉토리를 나타냅니다.
접근 방식
- 아이디어: 주어진 로그를 순회하면서 디렉토리의 깊이를 추적합니다.
- 알고리즘:
- 초기 깊이(depth)를 0으로 설정합니다.
- 각 로그를 순회하면서:
- "./"일 경우 특별히 처리할 필요 없이 넘어갑니다.
- "../"일 경우 현재 깊이(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)입니다.
반응형