정렬
페이지
미리보기
해 구성하기그리디 알고리즘
자세히 보기
백준 24025번
import sys
input = sys.stdin.readline

n = int(input())                            # 돌덩어리 무리 갯수

group = [i for i in range(1, n+1)]          # 돌덩어리 무리 (키작은 순)
limitList = list(map(int, input().split())) # 시야 점수 제한 크기 리스트

result = []
for i in limitList:
    if i < 0:                               # 시야 점수가 0보다 작은 경우
        result.append(group.pop(0))         # 작은놈 부터 배치
    else:                                   # 클 경우
        result.append(group.pop())          # 큰 놈부터 배치

if limitList[n-1] < 0:                      # 마지막 무리는 시야 점수 10^9임 ㅅㄱ
    print(-1)
else:
    for i in result:                        # 배치한거 출력
        print(i, end=' ')
자료 구조스택문자열
자세히 보기
백준 9012번
import sys
input = sys.stdin.readline

# 스택 기능과 스택의 항목 수 반환 기능을 갖는 클래스
class Stack:
    def __init__(self):
        self.stack = []

    def push(self, data):
        self.stack.append(data)

    def pop(self):
        self.stack.pop()

    def state(self):
        return len(self.stack)

for i in range(int(input())):
    psStack = Stack()           # 스택 객체 생성
    testData = input()          # 문자열 데이터 입력받음
    for data in testData:       # 문자열의 문자 반복
        if data == '(':         # 문자가 열린 괄호면 스택에 푸쉬
            psStack.push(data)
        elif data ==')':        # 문자가 닫힌 괄호면 스택에서 팝
            try:
                psStack.pop()
            except IndexError as e: # 빈 스택에서 팝 시도시 그 데이터를 푸쉬(invaild 처리를 위해)하고 반복 종료
                psStack.push(data)
                break
    print('YES') if psStack.state() == 0 else print('NO')   #스택이 비었으면 YES 아니면 NO