해리의 데브로그

(SW 문제해결 기본 - Stack1) SWEA 4873 - 반복문자 지우기

|

문제

  • SWEA 4873 - [파이썬 S/W 문제해결 기본 4일차] Stack1 - 반복문자 지우기
  • 문제링크
  • 문제의 저작권은 SW Expert Academy에 있습니다.

나의 코드

TC = int(input())

for tc in range(1, TC+1):
    Data = list(input())
    N = len(Data)
    stack = []
    for i in range(N):
        #stack이 비었거나, 스택의 마지막 값이 데이터 내 값과 같지 않은 경우 
        #=> stack에 저장(append)
        if not stack or stack[-1] != Data[i]:
            stack.append(Data[i])
        #stack에 값이 있고, 스택의 마지막 값과 데이터 내 값과 같은 경우 
        #=> stack에서 제거(pop)
        elif stack and stack[-1] == Data[i]:
            stack.pop()
    print(f'#{tc} {len(stack)}')

(SW 문제해결 기본 - Stack1) SWEA 4871 - 그래프 경로

|

문제

  • SWEA 4871 - [파이썬 S/W 문제해결 기본 4일차] Stack1 - 그래프 경로
  • 문제링크
  • 문제의 저작권은 SW Expert Academy에 있습니다.

나의 코드

def DFS(start):
    global result
    visited[start] = 1
    for next in range(1, v+1):
        if MyMap[start][next] and not visited[next]:
            if next == end_node:
                result = 1
                return
            DFS(next)

TC = int(input())
for tc in range(1, TC+1):
    v, e = map(int, input().split())
    MyMap = [[0]*(v+1) for _ in range(v+1)]
    visited = [0] * (v+1)
    for i in range(e):
        start, end = map(int, input().split())
        MyMap[start][end] = 1

    start_node, end_node = map(int, input().split())
    result = 0
    DFS(start_node)
    print(f'#{tc} {result}')

(SW 문제해결 기본 - Stack1) SWEA 4866 - 괄호 검사

|

문제

  • SWEA 4866 - [파이썬 S/W 문제해결 기본 4일차] Stack1 - 괄호 검사
  • 문제링크
  • 문제의 저작권은 SW Expert Academy에 있습니다.

나의 코드

TC = int(input())

for tc in range(1, TC+1):
    Data = input()
    N = len(Data)
    stack = []
    for i in range(N):
        #여는 괄호가 올 경우 => stack에 저장
        if Data[i] == "(" or Data[i] == "{":
            stack.append(Data[i])
        elif Data[i] == ")" or Data[i] == "}":
            #닫는 괄호 이며 stack이 빈 경우 => 처음부터 닫는 괄호가 오는 경우
            if len(stack) == 0:
                stack = [Data[i]]
                break
            #stack에 저장된 괄호와 일치하지 않는 경우
            elif (Data[i] == "}" and stack[-1] !="{") or (Data[i] == ")" and stack[-1] != "("):
                stack = [Data[i]]
                break
            #stack에 저장된 괄호와 일치하는 닫는 괄호가 오는 경우
            else:
                stack.pop()

    if not len(stack):
        print(f'#{tc} 1')
    else:
        print(f'#{tc} 0')

(SW 문제해결 기본 - Stack1) SWEA 4869 - 종이붙이기

|

문제

  • SWEA 4869 - [파이썬 S/W 문제해결 기본 4일차] Stack1 - 종이 붙이기
  • 문제링크
  • 문제의 저작권은 SW Expert Academy에 있습니다.

나의 코드

def GetSome(x):
    if x == N:
        return 1
    if x > N:
        return 0
    return GetSome(x+10) + GetSome(x+20) * 2


TC = int(input())
for tc in range(1, TC + 1):
    N = int(input())
    print('#%d %s'%(tc, GetSome(0)))

(SW 문제해결 기본 - LIST2) SWEA 4843 - 특별한 정렬

|

문제

  • SWEA 4843 - [파이썬 S/W 문제해결 기본 2일차] LIST2 - 특별한 정렬
  • 문제링크
  • 문제의 저작권은 SW Expert Academy에 있습니다.

나의 코드

TC = int(input())
for tc in range(1, TC+1):
    N = int(input())
    Data = list(map(int, input().split()))
    lst = [0]*N

    # Max 값 구하기
    for i in range(N//2):
        lst[i*2] = max(Data)
        Data.pop(Data.index(max(Data)))

    for i in range(N//2):
        lst[i*2+1] = min(Data)
        Data.pop(Data.index(min(Data)))

    print('#%s'%tc, end=' ')
    for i in range(10):
        print(lst[i], end=" ")
    print()