[Python][백준 30614] 로그 파일
카테고리: Python Coding Test
태그: coding test 문자열 백준 30614 스택 python
📝 로그 파일 문제 풀이
백준 30614번 로그 파일 문제의 파이썬 풀이
📝 문제 설명
💡 풀이
이 문제는 스택을 활용하여 프로그램의 시작과 종료가 올바르게 매칭되는지 확인하는 문제이다. 소문자가 나오면 스택에 추가하고, 대문자가 나오면 스택의 최상단 문자와 매칭되는지 확인한다.
🔍 코드 설명
- 로그 길이와 로그 문자열을 입력받는다.
- 로그 길이가 홀수이면 올바른 로그가 될 수 없으므로 0을 출력한다.
- 소문자와 대문자의 ASCII 코드 차이를 계산한다.
- 로그를 순회하면서:
- 소문자면 스택에 추가
- 대문자면 스택의 최상단 문자와 매칭되는지 확인
- 모든 검사가 끝난 후 스택이 비어있으면 1, 아니면 0을 출력한다.
✨ 참고
- ASCII 코드를 활용하여 소문자와 대문자의 매칭을 확인한다.
- 스택을 사용하여 프로그램의 시작과 종료 순서를 관리한다.
🎯 주의사항
- 로그 길이가 홀수인 경우는 항상 올바르지 않은 로그이다.
- 대문자가 들어오더라도 스택의 top에 있는 알파벳과 매칭되지 않으면 올바르지 않은 로그이다.
📝 코드
log_length = int(input())
logs = input().strip()
def calculate():
log_stack = []
result = False
if (log_length % 2):
return result
diff = ord('a') - ord('A')
for log in logs:
if 'a' <= log <= 'z':
log_stack.append(log)
else:
if not log_stack:
return result
if (ord(log_stack[-1]) - diff) == ord(log):
log_stack.pop()
else:
return result
result = not log_stack
return result
if __name__ == "__main__":
if calculate():
print(1)
else:
print(0)