이 영역을 누르면 첫 페이지로 이동
쿄코코 블로그의 첫 페이지로 이동

쿄코코

페이지 맨 위로 올라가기

쿄코코

얼레벌레 생활🤯

백준 9012(괄호) - 스택

  • 2024.10.14 20:19
  • [백준] Python,Java로 풀기📖/자료구조
    반응형

    https://www.acmicpc.net/problem/9012

     

     

    일단 내가 생각한 풀이

     

    • " (())()) "와 같은 문자열이 주어졌을 때, 여는 괄호 " ( "는 +1, 닫는 괄호 " ) "는 -1로 처리
    • 다만, 예외적으로 "))(("와 같이 닫는 괄호가 여는 괄호보다 먼저 나오는 경우에도 합이 0이 될 수 있으므로, 합계가 0보다 작아지는 순간 루프를 즉시 종료하고valid = False로 설정.
    • 루프가 끝난 후, valid가 True이면서 합계가 0이면 "YES"를 출력하고, 그렇지 않으면 "NO"를 출력합니다.

     

    ❓ python 풀이

    import sys
    
    T = int(sys.stdin.readline().strip())  # 테스트 케이스 수
    for i in range(T):
        l = sys.stdin.readline().strip()  # 각 괄호 문자열 입력 (개행 문자 제거)
        num = 0  # 괄호 균형을 나타내는 변수 초기화
        valid = True  # 올바른 괄호인지 확인하는 변수
    
        for j in l:
            if j == "(":
                num += 1
            elif j == ")":
                num -= 1
            if num < 0:  # 닫는 괄호가 여는 괄호보다 많으면 NO(예외 케이스 처리)
                valid = False
                break
    
        if valid and num == 0:
            print("YES")  # 괄호가 짝이 맞으면 YES
        else:
            print("NO")  # 짝이 맞지 않으면 NO

     

     

    ❓ 스택을 활용한 python 풀이

    import sys
    
    T = int(sys.stdin.readline().strip())  # 테스트 케이스 수 입력
    for _ in range(T):
        l = sys.stdin.readline().strip()  # 괄호 문자열 입력
        stack = []  # 스택 초기화
        valid = True  # 유효한지 여부를 나타내는 플래그
    
        for char in l:
            if char == "(":
                stack.append("(")  # 여는 괄호는 스택에 추가
            elif char == ")":
                if stack:
                    stack.pop()  # 닫는 괄호일 때, 스택에서 여는 괄호를 제거
                else:
                    valid = False  # 스택이 비어있다면 유효하지 않음
                    break
    
        if valid and not stack:  # 스택이 비어있어야 짝이 맞음
            print("YES")
        else:
            print("NO")

     

    반응형

    '[백준] Python,Java로 풀기📖 > 자료구조' 카테고리의 다른 글

    백준 10733번 (제로) - 자료구조, 스택  (0) 2024.10.21
    백준 10828(스택) - 스택, 자료구조  (0) 2024.10.14
    백준 1966(프린터 큐) - Python(파이썬) - 큐,자료구조  (0) 2022.07.03
    백준 5430(AC) -Python(파이썬) - 자료구조  (0) 2022.06.08
    백준 10828(스택) - Python(파이썬),Java(자바) -자료구조,스택  (0) 2022.06.07

    댓글

    이 글 공유하기

    • 구독하기

      구독하기

    • 카카오톡

      카카오톡

    • 라인

      라인

    • 트위터

      트위터

    • Facebook

      Facebook

    • 카카오스토리

      카카오스토리

    • 밴드

      밴드

    • 네이버 블로그

      네이버 블로그

    • Pocket

      Pocket

    • Evernote

      Evernote

    다른 글

    • 백준 10733번 (제로) - 자료구조, 스택

      백준 10733번 (제로) - 자료구조, 스택

      2024.10.21
    • 백준 10828(스택) - 스택, 자료구조

      백준 10828(스택) - 스택, 자료구조

      2024.10.14
    • 백준 1966(프린터 큐) - Python(파이썬) - 큐,자료구조

      백준 1966(프린터 큐) - Python(파이썬) - 큐,자료구조

      2022.07.03
    • 백준 5430(AC) -Python(파이썬) - 자료구조

      백준 5430(AC) -Python(파이썬) - 자료구조

      2022.06.08
    다른 글 더 둘러보기

    정보

    쿄코코 블로그의 첫 페이지로 이동

    쿄코코

    • 쿄코코의 첫 페이지로 이동

    검색

    메뉴

    • 홈

    카테고리

    • 분류 전체보기 (168)
      • Python (24)
        • 😈 99클럽 코테 스터디 4기 TIL (23)
        • 궁금한거 정리 (1)
      • SQL (16)
        • HackerRank (15)
      • [백준] Python,Java로 풀기📖 (71)
        • 정렬(Sorting) (6)
        • 그리디 (5)
        • 문자열 (7)
        • 수학 (3)
        • DFS&BFS (10)
        • 구현 (4)
        • 다이나믹 (17)
        • 이분탐색 (1)
        • 자료구조 (10)
        • 최단거리 (5)
        • 인덱스트리 (0)
      • [프로그래머스]Python,Java로 풀기 (6)
        • Level 1 (4)
        • Level 2 (2)
      • Study Platform📚 (25)
        • (운영체제) - 블로그 및 강의 참고 (0)
        • 김영한👨🏻‍🏫의 스프링 부트와 JPA 실무 완전 .. (5)
        • (알고리즘)- [이코테] 이것이 코딩테스트다 정리 (10)
        • 그림으로 배우는 Http&Network Basic (10)
      • 까먹을까봐 적는 것들 (4)
      • 테스트 보고 난 후..🤔 (0)
      • kt 에이블스쿨 (18)

    최근 글

    인기 글

    댓글

    공지사항

    아카이브

    태그

    • 코딩테스트준비
    • 오블완
    • 티스토리챌린지
    • 항해99
    • TiL
    • 백준
    • 99클럽
    • 프로그래머스

    나의 외부 링크

    정보

    쿄코코의 쿄코코

    쿄코코

    쿄코코

    블로그 구독하기

    • 구독하기
    • RSS 피드

    방문자

    • 전체 방문자
    • 오늘
    • 어제

    티스토리

    • 티스토리 홈
    • 이 블로그 관리하기
    • 글쓰기
    Powered by Tistory / Kakao. © 쿄코코. Designed by Fraccino.

    티스토리툴바