언어/Python

파이썬 알고리즘 - 스택(Stack)에서 최소값 출력하기

2017. 8. 28. 21:44

개발자 면접 트레이딩 - 파이썬 알고리즘 문제(11)



 

(1). 개발자 면접 트레이닝 - 스택(Stack)에서 최소값 출력하기


① 스택(Stack) 구조 이해하는 것이 중요

② Push, Pop, Peek 개념 파악 후 아래 코드 실습

③ 스택은 개념 상 사용 하는 곳이 많다. (ex : 브라우저 뒤로가기 등)

④ 예를들어 [2, 3, 7, 9, 12]  의 최소값은 2 출력

 

 

(2). 소스 코드


PYTHON

#stack_min.py
import unittest

class stack():
    def __init__(self):
        self.items = []
        self.mins = []
        self.min = None

    def push(self, item):
        self.items.append(item)
        if self.min is not None:
            self.mins.append(self.min)
        if self.min is None or self.min > item:
            self.min = item

    def pop(self):
        self.items.pop()
        self.min = self.mins.pop()

    def getminimum(self):
        return self.min

    def peak(self):
        return self.items[-1]

class test(unittest.TestCase):
    def test(self):
        st = stack()
        st.push(5)
        self.assertEqual(5, st.getminimum())
        st.push(3)
        self.assertEqual(3, st.getminimum())
        self.assertEqual(3, st.peak())
        st.pop()
        self.assertEqual(5, st.getminimum())

unittest.main()























 

(3). 소스 코드 분석


① 7 라인 : 스택 클래스(Class) 선언

② 9 라인 :  mins, min 변수를 통해 현재 최소값, 최소값 배열 선언

③ 14 라인 : 스택 Push 메소드 선언

④ 22 라인 : 스택 Pop 메소드 선언

⑤ 27 라인 : 최소값 반환하는 getminimum 메소드 선언

⑥ 34 ~ 끝 : 스택에 데이터 삽입 후 assertEqula 단위 테스트 함수를 사용하여 최소값 확인 및 루트 데이터 비교

 


자료구조의 Stack(스택)
 은 정말 중요한 개념이며, 응용 분야는 관련 검색을 통해 자세히 알아보자.

 


(4). 실행결과1 - 단위테스트 정상 출력(최소 값 결과 같을 경우)

 

 

(5). 실행결과2 - 단위테스트 에러 출력(최소 값 비교 다를 경우)


저작자표시 동일조건 (새창열림)

'언어 > Python' 카테고리의 다른 글

파이썬 알고리즘 - 스택(Stack)으로 큐(Queue)를 구현하기  (0) 2017.08.31
파이썬 알고리즘 - 스택(Stack)을 Set(리스트)으로 구현하기  (0) 2017.08.29
파이썬 알고리즘 - 링크드리스트(LinkedList) 회문(대칭) 출력  (0) 2017.08.27
파이썬 알고리즘 - 두 링크드리스트(LinkedList)의 합(SUM) 계산  (0) 2017.08.25
파이썬 알고리즘 - 선택 노드를 기준으로 링크드리스트(LinkedList) 분할  (0) 2017.08.24
'언어/Python' 카테고리의 다른 글
  • 파이썬 알고리즘 - 스택(Stack)으로 큐(Queue)를 구현하기
  • 파이썬 알고리즘 - 스택(Stack)을 Set(리스트)으로 구현하기
  • 파이썬 알고리즘 - 링크드리스트(LinkedList) 회문(대칭) 출력
  • 파이썬 알고리즘 - 두 링크드리스트(LinkedList)의 합(SUM) 계산
[좋은사람]
[좋은사람]
좋은사람의 개발 노트 입니다.
[좋은사람]
좋은사람의 개발 노트
[좋은사람]
전체
오늘
어제
  • 전체보기 (189)
    • 언어 (68)
      • Java (12)
      • Python (39)
      • C# (5)
      • PHP (4)
      • Go (8)
    • OS (18)
      • Linux (7)
      • Windows 10 (5)
      • Etc (6)
    • 빅데이터 & 분석 (8)
      • R (0)
      • Machine Learning (8)
    • 네트워크 (4)
      • Etc (4)
    • 웹 프론트 (25)
      • Javascript & ECMA (8)
      • Vue (13)
      • React (4)
    • 웹 백엔드 (15)
      • Spring (3)
      • Django & Flask (7)
      • Npm & Express (5)
    • 개발도구 (18)
      • Jetbrains (3)
      • Eclipse (5)
      • Git (4)
      • Atom & VScode (6)
    • 데이터베이스 (7)
      • Oracle (2)
      • MariaDB & MySQL (2)
      • Etc (3)
    • 모바일 (6)
      • Android (3)
      • Hybrid (3)
    • 라이프 (20)
      • 여행 & 일상 (6)
      • 취미 (14)

블로그 메뉴

  • 홈으로
  • 블로그소개
  • 태그
  • 방명록

공지사항

인기 글

태그

  • windows10
  • Linux
  • react
  • Thread
  • 윈도우10
  • CFW
  • Anaconda
  • ubuntu
  • SpringSTS
  • 머신러닝
  • nodejs
  • 2DS
  • centos
  • OCR
  • Git
  • Algorithm
  • python
  • Database
  • 디자인패턴
  • 커펌
  • 개발자 면접
  • 아톰 에디터
  • C#
  • 리액트
  • 인텔리j
  • javascript
  • Java
  • ATOM
  • 이클립스
  • flask
  • 3DS
  • npm
  • 미뮤
  • php
  • go
  • ps4
  • Eclipse
  • Django
  • 코딩 면접
  • vue.js

최근 댓글

최근 글

hELLO · Designed By 정상우.
[좋은사람]
파이썬 알고리즘 - 스택(Stack)에서 최소값 출력하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.