[PYTHON] 백준_알고리즘 기초_자료구조 1

백준_4873, 10828, 8093, 9012, 1874

Posted by iheese on December 17, 2021 · 5 mins read
#4873 셀프넘버 
set_natural=set(range(1,10001))
set_generate=set()

for i in range(1,10001):
        generate=i+sum(map(int, str(i))) 
#번호의 자기자신과 각 자릿수를 더하는 것
        set_generate.add(generate)

ans=sorted(set_natural-set_generate) #정렬하기
for i in ans:
   print(i)


#10828 스택
import sys

n = int(sys.stdin.readline())
#입출력 속도 비교 : sys.stdin.readline > raw_input() > input()  
#반복문으로 입출력 받을떄 인풋은 오래걸림

stack=[]
for i in range(n):
  command =sys.stdin.readline().split()  #순서을 받기

  if command[0] == 'push':
    stack.append(command[1])

  elif command[0] =='pop':
     if len(stack)==0:
       print(-1)
     else:
       print(stack.pop())

  elif command[0]=='size':
    print(len(stack))

  elif command[0]=='empty':
   if len(stack)==0:
     print(1)
   else:
     print(0)

  elif command[0]=='top':
   if len(stack)==0:
      print(-1)
   else:
      print(stack[-1])


# 단어 뒤집기 8093

T=int(input()) #문장 갯수 받기

for i in range(T): # 문장별로 for문
  sentence= list(input().split())
  for j in sentence:
     print(j[::-1],end=" ")  #j[::-1] 뒤부터 출력


#9012 괄호
T=int(input())

for i in range(T):
  s=list(input())
  sum=0
  for i in s:
    if i =='(':
      sum+=1
    elif i == ')':
      sum-=1
    if sum<0:
      print('NO')  #어차피 ) 이게 많아지면(sum이 음수가 될수 없기 때문에) yes가 나올 수 없기 때문에
      break

  if sum >0:
    print('NO')
  elif sum==0:    #합이 0이 되어야  "(",")" 갯수가 같다.
    print('YES')


#1874 스택 수열

#스택은 나오는 입구와 들어가는 입구가 같은 구조 # 박스 안에 책 쌓기
#큐는 나오는 입구와 들어가는 입구가 다른 구조 #터널

count=1
temp=True
op=[]
stack=[]

N=int(input())  #몇 개 숫자가 들어있는지
for i in range(N):
  num =int(input())
  while count <= num:   
 #마지막에 들어간 애가 먼저 나오니까 첫번째 num을 위해 쌓는다.
    stack.append(count)
    op.append('+')
    count+=1 

  if stack[-1] == num: #뺼 차례 맨 뒤에 있는 것 부터 뺀다.
    stack.pop()
    op.append('-')
  else:
    temp=False  
    break

if temp == False:
  print("NO")
else:
  for i in op:
    print(i)