[Python][백준 30614] 로그 파일

Date:     Updated:

카테고리:

태그:

📝 로그 파일 문제 풀이

백준 30614번 로그 파일 문제의 파이썬 풀이

📝 문제 설명

Image

💡 풀이

이 문제는 스택을 활용하여 프로그램의 시작과 종료가 올바르게 매칭되는지 확인하는 문제이다. 소문자가 나오면 스택에 추가하고, 대문자가 나오면 스택의 최상단 문자와 매칭되는지 확인한다.

🔍 코드 설명

  1. 로그 길이와 로그 문자열을 입력받는다.
  2. 로그 길이가 홀수이면 올바른 로그가 될 수 없으므로 0을 출력한다.
  3. 소문자와 대문자의 ASCII 코드 차이를 계산한다.
  4. 로그를 순회하면서:
    • 소문자면 스택에 추가
    • 대문자면 스택의 최상단 문자와 매칭되는지 확인
  5. 모든 검사가 끝난 후 스택이 비어있으면 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)

Python Coding Test 카테고리 내 다른 글 보러가기