📌 LeetCode [1598]: Crawler Log Folder
🔗 문제 링크
문제 설명 📄
주어진 로그 목록 logs
는 파일 시스템의 이동 경로를 나타냅니다. 다음 규칙에 따라 파일 시스템의 최상위 폴더로 이동하는 데 필요한 최소 작업 수를 반환합니다:
"../"
: 현재 폴더에서 상위 폴더로 이동. 최상위 폴더에 있는 경우 무시."./"
: 현재 폴더에 머무름. 무시."x/"
:x
라는 하위 폴더로 이동.
최종적으로 필요한 최상위 폴더 이동 횟수를 반환하세요.
문제 접근 방식 📋
- 로그 분석:
"../"
는 상위 폴더로 이동. 최상위 폴더에 있지 않다면answer
를 감소시킵니다."./"
는 무시.- 나머지 하위 폴더로 이동 시
answer
를 증가시킵니다.
- 문자열 처리:
- 각 로그의 끝에 있는
/
는 로그의 의미를 구분하기 위한 기호일 뿐이므로split
을 사용해 의미를 분석합니다.
- 각 로그의 끝에 있는
- 최종 결과:
- 상위 폴더로 이동할 때 최상위 폴더를 초과하지 않도록 조건을 추가합니다.
Solution 💻
class Solution:
def minOperations(self, logs: List[str]) -> int:
answer = 0
for log in logs:
if log == "../":
if answer != 0:
answer -= 1
elif log != "./":
answer += 1
return answer
시간 복잡도 분석 ⏲️
- 로그 순회: (O(n)), (n)은 로그의 길이.
- 조건 처리: 각 로그에 대해 상수 시간 작업.
- 최종 시간 복잡도: (O(n)).
공간 복잡도 분석 🗄️
- (O(1)), 추가 데이터 구조 사용 없음.
'알고리즘' 카테고리의 다른 글
LeetCode [867]: Transpose Matrix (0) | 2024.12.12 |
---|---|
LeetCode [1480]: Running Sum of 1d Array (1) | 2024.12.11 |
LeetCode [1945]: Sum of Digits of String After Convert (0) | 2024.12.09 |
LeetCode [1460]: Make Two Arrays Equal by Reversing Subarrays (1) | 2024.12.08 |
LeetCode [1518]: Water Bottles (1) | 2024.12.08 |