본문 바로가기
Python/백준 문제

백준 알고리즘 문제_10828번

by hooni40 2021. 5. 2.
728x90
반응형

안녕하세요, 개발자 취업에는 거의 모든 기업에서 코딩 테스트를 본다고 합니다!

저는 비전공자로서 개발자 준비를 한지 이제 1개월정도 되어가는데요(회사에서 파이썬 강의만 몇 개 들음...)

한번 코딩테스트의 수학의 정서가 같은 백준 문제 100문제 푸는것을 목표로 준비해보겠습니다! (일주일에 2~3문제씩!)

글의 구조는 -> 문제 풀이 -> 나의 약점이 뭔지 복기(?)하는 순서입니다.

 

+) 문제풀기위한 게시글이므로 파이썬 문법 설명은 생략하였습니다.

추가로 실제로 문제를 풀면서 글을 쓰는 것이라 서체에 불편함을 느끼시더라고 너그러이 용서 부탁드립니다^_^

더 좋고 빠른 방법이 있다면 댓글로 알려주시면 감사드리겠습니다!

 

이번 시간에는 10828번을 풀어보겠습니다. (문제 링크 : 10828번

 

Command

  • push X: 정수 X를 스택에 넣는 연산이다.
  • pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.
  • size: 스택에 들어있는 정수의 개수를 출력한다.
  • empty: 스택이 비어있으면 1, 아니면 0을 출력한다.
  • top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다.

생각해보기 : 

-. 첫 input은 command를 몇 개 받아야 할지를 나타낸다.(n)

-. n번의 커맨드를 받아야 한다 for문 사용

-. command들이 딱 정해져 있는(?) 단어들이므로 Boolean을 이용한 조건문을 사용하자!

-. 특이 Case 생각하기!

   ① top/empty/pop command는 리스트가 비워져 있을 때 -1을 출력해야 한다. → 조건문 안에 조건문 하나 더 적용!

   ② push command의 경우 input에 띄어쓰기와 숫자가 있다.

    → "push "는 나에게 필요 없는 것이다.(5번째 인덱스까지)

    → 리스트를 하나 만들어서 push뒤의 숫자만 저장하자! 리스트 슬라이싱 사용

-. 스택 가장 위에 있는 수 출력 → [-1] 인덱스를 출력하자!

 

Software 직군으로 들어온 회사 동기가 나에게 추천해준 방식(?)이다!

★★★문제를 보고 바로 코딩하지 말고 어떻게 풀지 생각부터 하기!!! (그 후 구현해도 늦지 않다!)

 

문제를 보고 어떻게 풀지 생각하면서 적어보니 정말 큰 그림을 그릴 수 있었다.

 

<내가 짠 코드> ---- 백준 홈페이지에서 런타임 에러 발생 ㅠㅠ

개선 필요 사항 및 배운 점!

위에 코드 처럼하면 백준 알고리즘 사이트 채점 시 런타임 에러가 발생한다..ㅠㅠ

구글링을 해보니 반복 문안에서 입력받을 때 input을 사용하면 런타임 에러가 발생한다고 한다.

(참고, 속도 : sys.stdin.readline > input() )

추가로, split()을 사용하면 리스트로 입력받게 된다는 것을 새로 배웠다!!

[split 괄호 안을 비워두면 띄어쓰기 기준으로 나누어진다]

Code
Result

위 코드에서 input을 sys.stdin.readline.split()으로 바꿔주고 command를 더 쉽게 리스트 형식으로 받아주자!

(그렇게 하면 list.append(int(command[5:])) 과 같은 더러운 코드를 안 써도 된다!)

<개선된 코드>

♠이 문제를 풀면서 느낀 점 및 개선사항

-. 첫 문제지만 나름 스스로 끝까지 코드를 짜 보아서 만족스럽다(비록 런타임 오류로 100프로 정답은 아니지만 ㅠㅠ)

-. 반복문에서 입력을 받는 거라면 무조건!! sys.stdin.readline()을 사용하자

-. split()을 사용하면 리스트로 입력을 받는다

728x90
반응형

'Python > 백준 문제' 카테고리의 다른 글

백준 알고리즘 문제_1406번  (0) 2021.05.13
백준 알고리즘 문제_1874번  (0) 2021.05.05
백준 알고리즘 문제_9012번  (0) 2021.05.04
백준 알고리즘 문제_9093번  (0) 2021.05.03

댓글