2 분 소요

사용 언어: Python3


문제

스크린샷 2022-11-14 오후 2 44 22

풀이

내 풀이

def solution(s):
    stack = []
    
    if s[-1] == '(':
        return False
    if len(s) % 2 != 0:
        return False
    
    for x in reversed(s):
        if x == ')':
            stack.append(x)
        else:
            if len(stack) == 0:
                return False
            stack.pop()
            
    if len(stack) == 0:
        return True

    return True

다른 사람의 풀이

def solution(s):
    cnt = 0
    
    for val in s:
        if cnt < 0:
            break
        cnt = cnt + 1 if val == "(" else cnt - 1 if val == ")" else cnt
        # cnt = (cnt + 1 if val == "(" else cnt - 1 if val == ")" else cnt) # 위와 같은 의미
        # cnt += 1 if val == "(" else cnt - 1 if val == ")" else cnt # 위와 같은 의미

    return cnt == 0

s 를 순회하며 초기값이 0 인 cnt를 업데이트한다.

s 가 ( 일 경우에는 cnt + 1,
s 가 ) 일 경우에는 cnt - 1,
둘 다 아닌 경우에는 cnt 그대로를 대입한다.

구현은 삼항 연산자를 이용해 코드를 줄일 수 있다.

IMG_0389

내 풀이 2

다른 사람의 풀이를 참고하여, 삼항 연산자 & stack 을 이용하여 풀어보았다.

def solution(s):
    stack = []
            
    for val in s:
        stack.append(val) if val == "(" else stack.pop() if len(stack) > 0 else stack
        
    return len(stack) == 0

참고
이때 조건문을 제외한 stack.append(val)stack.pop() 그리고 stack 자리에는 “expression” 만 들어갈 수 있다.
(continue 혹은 break는 안된다는 의미이다.)

# 가능
months[1] = 29 if year % 400 == 0 or year % 4 == 0 and year % 100 else 28

# 불가능
cnt += 1 if n[i] == '0' else break

스크린샷 2022-11-14 오후 4 02 35

참고

삼항 연산자

일반적인 if ~ else ~ 라고 생각하면 된다.

# 짝수인지 홀수인지 판단하는 예제
a = 10

# 일반적인 if ~ else ~
if a % 2 == 0:
    print("even")
else:
    print("odd")

# 삼항 연산자 if ~ else ~ 표현
print("even") if a % 2 == 0 else print("odd")

삼항 연산자 중첩

이 글을 참고했다.

IMG_0388

삼항 연산자의 중첩은 if ~ elif ~ else ~ 라고 생각하면 된다.

# arr[index] 이 2의 배수인지, 3의 배수인지 아니면 다른 수의 배수인지
arr = [15, 16, 17]

# 일반적인 if ~ elif ~ else
for val in arr:        
    if val % 2 == 0:
        print("AA")
    elif val % 3 == 0:
        print("BB")
    else:
        print("CC")


# 삼항 연산자 if ~ elif ~ else 표현
for val in arr:
    print("AA") if val % 2 == 0 else print("BB") if val % 3 == 0 else print("CC")


💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기