새벽_나그네
12시 지난 새벽
새벽_나그네
전체 방문자
오늘
어제
  • 분류 전체보기
    • TIL
    • DevLog
    • Algorithm
    • ComputerScience
    • etc

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 국비지원
  • 내일배움캠프
  • AI트랙
  • 코딩
  • til
  • docker
  • 자기주도학습
  • Selenium 4
  • 스파르타코딩클럽
  • 코린이
  • 개발일지
  • TodayILearned
  • 코딩프로젝트
  • machine learning
  • 내일배움카드
  • 프로그래머스
  • Python
  • 내일배움단
  • portfolio
  • Github

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
새벽_나그네

12시 지난 새벽

Algorithm

[프로그래머스] 올바른 괄호

2022. 8. 20. 23:19

문제

문제 설명

괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어

  • "()()" 또는 "(())()" 는 올바른 괄호입니다.
  • ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.

'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.

제한사항
  • 문자열 s의 길이 : 100,000 이하의 자연수
  • 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.

 

입력 & 출력

입출력 예

sanswer

"()()" true
"(())()" true
")()(" false
"(()(" false

풀이 과정

collections에서 제공하는 deque를 사용

조건문 판별할때 판별하면서 바로 pop이 수행되도록 처음에 구성하였는데 중복으로 pop이 일어나는 부작용이 있어서 일부 코드를 수정

1. deque를 가져와서 자료형을 선언해준다 이는 popleft를 사용하여 큐와 같은 모습을 사용하기 위하서 이다.

2. 조건문은 크게 "("가 들어왔을 때와 ")"가 들어왔을 때로 나눌 수 있으며 "(" 일 때는 check라는 배열에 순서대로 append 해주며 ")"가 들어왔을 때는 check에 있는 "("를 하나씩 빼주면서 한쌍이 될 때는 check에 내용이 남아있지 않게 구성한다.

3. 2번을 수행할때 ")" 닫히는 괄호가 나왔을 때 check 배열에 아무 값이 없다면 문제에서 이야기하는 False의 경우이므로 answer에 바로 False를 넣어주면서 for문을 종료하도록 한다.

4. 모든 for문이 다 수행되었을때 check 배열에 값이 남아있는 경우에도 한쌍으로 구성되어있지 않다는 뜻이므로 False를 뱉으면서 종료될 수 있도록 한다.

 

코드

from collections import deque


def solution(s):
    answer = True
    s_queue = deque(list(s))
    check = []

    for i in range(len(s)):
        if s_queue[0] == "(":
            s_queue.popleft()
            check.append("(")
        elif s_queue[0] == ")":
            if len(check) != 0:
                s_queue.popleft()
                check.pop()
            else:
                answer = False
                break

    if len(check) != 0:
        answer = False

    return answer

s = "()()"

solution(s)
저작자표시 비영리 변경금지 (새창열림)

'Algorithm' 카테고리의 다른 글

[프로그래머스] 튜플  (0) 2022.08.28
[프로그래머스] 수식 최대화  (0) 2022.08.24
[프로그래머스] 두 큐 합 같게 만들기  (0) 2022.08.20
[프로그래머스] 성격 유형 검사하기  (0) 2022.08.18
[프로그래머스] 오픈채팅방  (0) 2022.08.18
    'Algorithm' 카테고리의 다른 글
    • [프로그래머스] 튜플
    • [프로그래머스] 수식 최대화
    • [프로그래머스] 두 큐 합 같게 만들기
    • [프로그래머스] 성격 유형 검사하기
    새벽_나그네
    새벽_나그네
    IT, 프로그래밍, 정보, 스마트스토어

    티스토리툴바