알고리즘

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

2021. 11. 3. 19:53
목차
  1. 문제
  2. 제한사항
  3. 입출력 예 설명
  4. 접근
  5.  
  6. 결과

[출처] :  https://programmers.co.kr/

문제

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

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

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

제한사항

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

입출력 예 설명

접근

대표적인 스택 문제이다

스택을 하나만들고 반복문을 이용해서 주어진 문자열을 하나씩 뽑는다

만약 '(' 이거라면 스택에 넣고 이 모양이 아닌 ')' 이 모양일 경우에는 스택을 확인한다

스택을 확인했을때 크기가 0 즉 스택에 아무것도 없다면 ')' 이 모양이 처음으로 들어왔으므로 False를 리턴해주면 된다

스택이 비어있지 않다면 pop()연산을 이용해서 저장된 '(' 이 모양을 꺼내준다.

그렇게 되면 완전한 괄호가 된다.

이런식으로 입력으로 주어진 문자열의 끝까지 돌고나서 스택을 확인했을때 비어있다면 짝이 다 맞았다는 것이므로 True를 리턴하고, 스택을 확인했을때 비어있지 않다면 짝이 맞지 않는것이므로 False를 리턴하면된다.

*이런 문제는 보자마자 스택을 이용해야 된다는 것을 바로 떠올릴수 있도록 연습하자

def solution(s):
    answer = True
    stack = []
    for i in s:
        if i =="(":
            stack.append(i)
        else:
            if len(stack) ==0:
                return False
            else:
                stack.pop()
    if len(stack) == 0: return True
    else: return False

 

결과

 

'알고리즘' 카테고리의 다른 글

[프로그래머스 - Level 2] 카펫  (0) 2021.11.08
[프로그래머스 - Level 2] 구명보트  (0) 2021.11.08
[프로그래머스 - Level 2] 땅따먹기  (0) 2021.10.29
[프로그래머스 - Level 2] N개의 최소공배수  (0) 2021.10.26
에라토스테네스의 체  (0) 2021.10.26
  1. 문제
  2. 제한사항
  3. 입출력 예 설명
  4. 접근
  5.  
  6. 결과
'알고리즘' 카테고리의 다른 글
  • [프로그래머스 - Level 2] 카펫
  • [프로그래머스 - Level 2] 구명보트
  • [프로그래머스 - Level 2] 땅따먹기
  • [프로그래머스 - Level 2] N개의 최소공배수
hyeonta
hyeonta
공부한 내용을 정리하는 블로그 입니다.
개발 일지공부한 내용을 정리하는 블로그 입니다.
hyeonta
개발 일지
hyeonta
전체
오늘
어제
  • 분류 전체보기 (16)
    • 개발 (3)
      • Python (0)
      • Java (2)
      • flask (1)
      • Django (0)
    • 일상 (0)
    • 인프라 (3)
      • 네트워크 (1)
      • 리눅스 (2)
      • DB (0)
    • 알고리즘 (7)
    • 잡다한 것들 (0)
    • Git&Github (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 올바른 괄호
  • 모니터링툴
  • sqlacodegen
  • flask
  • sqlalchemy
  • Cockpit
  • N개의 최소공배수
  • 땅따먹기
  • Nmap
  • Java
  • 프로그래머스
  • 소수구하기
  • 카펫
  • ssh
  • Linux
  • network
  • 구명보트
  • spring boot
  • Python
  • H-index
  • 큰 수 만들기
  • ORM

최근 댓글

최근 글

hELLO · Designed By 정상우.
hyeonta
[프로그래머스 - Level 2] 올바른 괄호
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.