티스토리 뷰

코딩 테스트 결과가 너무 형편없어서 하나한 기초부터 다시 스킬업을 시켜보고자 한다.
백준 알고리즘 기초 강의에 있는 문제들이 연습하기 적절하다 하여 거기 있는 모든 문제를 풀고자 한다.
화이팅!


  • input 데이터를 제대로 받는 방법을 아는 것이 이 과제의 가장 큰 핵심인 것 같다 (...??)
  • stack 구조는 말하자면 말 뜻 그대로 젤 위에 입구가 하나인 data를 stacking 하는 구조의 데이터!

import sys

if __name__ == "__main__" :

    N = int(sys.stdin.readline())
    staack = []
    for i in range(N) :
        inp_ = sys.stdin.readline().split()
        if inp_[0] == "push" :
            val = int(inp_[1])
            staack.append(val)
        elif inp_[0] == "pop" :
            if len(staack) > 0 :
                val = staack.pop()
                print(val)
            else :
                print(-1)
        elif inp_[0] == "size" :
            print(len(staack))
        elif inp_[0] == "empty" :
            print(1 if len(staack) == 0 else 0)
        elif inp_[0] == "top" :
            if len(staack) > 0 :
                print(staack[-1])
            else :
                print(-1)
  • input() 함수를 사용하면 엔터를 칠때까지 (\n) 프로그램이 멈춰있다. input으로 들어오는 데이터의 마지막 부분에 엔터가 없어서 그런 것 같다. 진짜 백준은 불편하다.
  • 게다가 input 데이터를 space로 나누는 부분도 split()으로 하면 자동으로 나뉜다고 한다 이 기능은 input() 함수나 stdin.readline을 쓸 일이 평소 없다보니 몰랐다. 어떻게 데이터가 들어오는지 궁금해서 테스트 해봤다

>>> import sys
>>> sys.stdin.readline()
123 456
'123 456\n'
>>> sys.stdin.readline().split()
123 456
['123', '456']
>>> 
  • 위와 같이 나온다, 백준 문제를 풀 때는 이런 부분을 조심해야할듯하다
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
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 31
글 보관함