티스토리 뷰

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

 

 

오늘 배운 강의 목록

오늘은 7,8,9강을 수강했다. 

오전에 듣자니 집중할 수 있는 시간에 하는 게 좀 아쉬워서 저녁시간으로 변경했다. 퇴근하고 피곤하긴 하지만 그래도 꾸준히 해보자!ㅎㅎ

 

 

자료구조란?

데이터의 저장 및 관리 방법론으로 단순한 저장공간만을 의미하는 것이 아님

 

 

Stack이란?

LIFO (Last In First Out): 마지막에 들어온 값을 먼저 제거 

LIFO Principle in Stack ❘ GeeksforGeeks

 

 

 

10773번: 제로

풀이는 쉬웠는데 인풋을 받는 형태를 어떻게 해야하나 했다. 강사님 보니까 문제에서 '예제 입력1' 이렇게 적힌 거를 그대로 넣어서 푸시더라. 난 그냥 내 임의로 넣었는데.. 그렇게 하면 안되는구나 깨달았다 ㅎㅎ; 

예를 들어 인풋의 처음은 들어올 숫자의 갯수이다. 이랬는데 나는 내 임의대로 숫자의 갯수인 첫 번째 값은 제외하고 두 번째 값부터 입력한거다 ㅎㅎ...  그러면 안되는구나. 알았으면 됐지 뭐 ㅎㅎ

 

풀이

K = int(input())

stack = []
for i in range(K):
    n = int(input())

    if n == 0:
        stack.pop()
    else:
        stack.append(n)

print(f"Answer: {sum(stack)}")

(마지막에 Answer print도 그냥 내 마음대로 찍은 것...) 

 

 

 

4949번: 균형잡힌 세상

풀이

def is_match(i: str) -> bool:
    """짝이 맞는지 아닌지 확인"""
    if i == "]" and stack and stack[-1] == "[":
        return True
    if i == ")" and stack and stack[-1] == "(":
        return True

    return False

while True:
    sentence = input()

    if sentence == ".":
        break

    stack = []
    for i in sentence:
        if i in ["[","]","(",")"]:
            if is_match(i):
                stack.pop()
            else:
                stack.append(i)

    if len(stack):
        print("no")
    else:
        print("yes")

 

 

강사님 풀이

while True:
    s = input()
    if s == ".":
        break

    stack = []
    balanced = True

    for i in range(len(s)):
        if s[i] == "(" or s[i] == "[":
            stack.append(s[i])

        if s[i] == ")":
            # stack이 비어있으면 안됨
            if len(stack) == 0:
                balanced = False
                break

            last = stack.pop()
            if last != "(":
                balanced = False
                break

        if s[i] == "]":
            # stack이 비어있으면 안됨
            if len(stack) == 0:
                balanced = False
                break

            last = stack.pop()
            if last != "]":
                balanced = False
                break

    # 마지막에는 stack이 비어있어야 함
    if len(stack) != 0:
        balanced = False

    if balanced:
        print("yes")
    else:
        print("no")

 

 

 

이거 스택 구조 모르고 그냥 문제 바로 풀었으면 당황했을 것 같다. 좋아 오늘도 하나 배웠어~~

 

 

 

 

 

https://abit.ly/lisbva

 

#패스트캠퍼스 #환급챌린지 #패스트캠퍼스후기 #습관형성 #직장인자기계발 #오공완

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함