본문 바로가기
📊 Algorithm/Algorithm plus+

🚩 솔브닥 - 그랜드 아레나 🚩 + 👽왹파티

by 정람지 2023. 8. 12.

대회형 랭킹올리기는 처음이다

쉬운 앞 두 문제를 풀고 기뻐했으나..

장난하나

거기서 멈췄다

...

일단 재수강은 못하는 B가 나왔으니 뭐..

?? 이렇게 망쳐도 B가 나오네 c- 나올줄


<망한코드>

시간초과

from sys import stdin
n = int(stdin.readline())

def Calcul(n,x,y):
    if x == "*" :
        return n * y
    else:
        return n + y

def Seven(k_now,rere):
    global LUCKY
    if rere == N:
        if k_now % 7 == 0: 
            LUCKY = True
        return 0
    
    #1
    k_now1 = Calcul(k_now,Nlist[rere[0]],Nlist[rere[1]])
    Seven(k_now1,rere+1)
    #2
    k_now2 = Calcul(k_now,Nlist[rere[2]],Nlist[rere[3]])
    Seven(k_now2,rere+1)

    
for _ in range(n):
    N = int(stdin.readline())
    Nlist = []
    LUCKY = False

    for i in range(N):
        x1,y1,x2,y2 = stdin.readline()[:-1]
        Nlist.append([x1,y1,x2,y2])

    Seven(1,0)

    if LUCKY:
        print("LUCKY")
    else:
        print("UNLUCKY")

틀렸습니다

from sys import stdin
n = int(stdin.readline())

for _ in range(n):
    N = stdin.readline()[:-1]
    stack = []

    for i in N :
        print(stack)
        if i == '(' :
            stack.append(i)
        elif i == ')' :
            if len(stack) != 0 and stack[-1] == '(' :
                stack.pop()
            elif len(stack) != 0 and stack[-1] == '?' :
                stack.pop()
            else:
                stack.append(')')
        elif i == '?' : # 일단 ? 는 무조건 넣기
            stack.append('?')
        elif i == '*':
            stack.append('*')
    print(1,stack)

    stack_del_index = []
     # 별 오른쪽에 있는 )와 별 왼쪽에 있는 ( 처리 가능
    left_thing =[]
    star_time = False #오른쪽)
    for k in range(len(stack)):
        if stack[k] == "*": # 별 나올 시 
            star_time = True
            stack_del_index.append(k)
            for cha in left_thing: # 왼쪽
                stack_del_index.append(cha)
            left_thing = []

        if stack[k] == ")" and star_time:
            stack_del_index.append(k)

        if stack[k] == "(":
            left_thing.append(k)
    
    #새로운스택
    new_stack = []
    for j in range(len(stack)):
        if j in stack_del_index:
            continue
        new_stack.append(stack[j])
    
    print(2,new_stack)
    # ? 후처리 ? ==> )
    ques_left = False
    if new_stack:
        for k in range(len(new_stack)-1,-1,-1):
                if new_stack[k] == "?":
                    ques_left = True
                elif new_stack[k] == "(" and ques_left:
                    del new_stack[k+1]
                    del new_stack[k]
                    ques_left = False
                else:
                    ques_left = False
    print(3,new_stack)
    ques_count = 0
    #별이 있으면 ? 무조건 yes
    if star_time and new_stack: 
        for w in range(len(new_stack)-1,-1,-1):
            if new_stack[w] == "?":
                del new_stack[w]
    #별 없을 시 마지막에 남은 ?들이 짝수이면 yes
    elif new_stack:
        for w in range(len(new_stack)-1,-1,-1):
            if new_stack[w] == "?":
                ques_count += 1
    if ques_count % 2 != 0:
        ques_count = 0
    print(4,new_stack,ques_count)
    #스택에 값이 있을 시 no
    if len(new_stack)-ques_count == 0:
        print("YES")
    else:
        print("NO")

와 이 문제 진짜 ㅠ


 

 

 

solved.ac

알고리즘 문제해결 학습의 이정표 🚩 Baekjoon Online Judge 문제들의 난이도 및 티어 정보를 제공하는 사이트입니다.

solved.ac

문제 해설

봤는데 모르겠다.

으으

나중에봐야지


끝나고 왹파티!

 

5시 소강상태.. 6시에 국밥먹고 해산!

👽💗👽💗👽💗👽💗👽💗👽💗👽💗👽💗👽💗👽💗