DevSSOM

자료구조 - 최대값 기계 문제 본문

자료구조

자료구조 - 최대값 기계 문제

데브쏨 2021. 6. 11. 14:09
반응형

최댓값 기계

 

이번 문제에서는 최댓값 기계를 만들어 봅니다. 이 최댓값 기계는 숫자를 여러개 담을 수 있으며, 담겨있는 숫자들 중에서 최댓값을 반환할 수 있습니다. 조금 더 자세히 이야기하면, 다음의 기능을 지원합니다.

 

  • machine.addNumber(x) : 숫자 x를 최댓값 기계 machine에 추가합니다.
  • machine.removeNumber(x) : 숫자 x를 최댓값 기계 machine으로부터 제거합니다. 만약 숫자 x가 최댓값 기계 내에 없다면 아무 일도 일어나지 않습니다.
  • machine.getMax() : 최댓값 기계 machine이 갖고있는 숫자들 중 최댓값을 반환합니다.

예를 들어, 최댓값 기계의 이름이 myMachine이고 숫자 2, 5, 3, 4 를 각각 추가하기 위해서는 다음의 명령어를 사용합니다.

 

myMachine.addNumber(2)
myMachine.addNumber(5)
myMachine.addNumber(3)
myMachine.addNumber(4)

 

이후 myMachine.getMax() 를 호출하면, 이는 5를 반환하게 됩니다. class를 이용하여 최댓값 기계를 구현하세요.

 

class maxMachine :
    def __init__(self) :
        pass

    def addNumber(self, n) :
        pass

    def removeNumber(self, n) :
        pass

    def getMax(self) :
        pass

def main():

    myMachine = maxMachine()

    '''
    테스트를 하고싶으면, 아래 부분을 수정합니다.
    '''

    myMachine.addNumber(1)
    myMachine.addNumber(2)
    myMachine.addNumber(3)
    myMachine.addNumber(2)

    print(myMachine.getMax())

    myMachine.removeNumber(3)

    print(myMachine.getMax())

    myMachine.removeNumber(2)

    print(myMachine.getMax())

if __name__ == "__main__":
    main()

 

 

>>> 이걸 구현해보면 (빈칸 채우기)

class maxMachine :
    def __init__(self) :
        self.myData = []
        
# __init__ : 인스턴스가 생성되자마자 바로 실행되는 함수라는 뜻
# 	     myMachine = maxMachine() 인스턴스가 생기자마자 myMachine.__init__() 함수가 실행됨
# self : 인자가 X, 인스턴스에 대한 함수라는 뜻. 인스턴스 내에서 실행되는 함수다
# self.myData : 인스턴스에다가 myData라는 빈 리스트를 만들어. 숫자를 저장해야할 주머니가 필요하니까

    def addNumber(self, n) :
        self.myData.append(n)

# addNumber(self, n) : 인스턴스 안에 숫자 n을 추가
# self.myData.append(n) : myData 리스트 맨 끝에 n 추가

    def removeNumber(self, n) :
        self.myData.remove(n)

# removeNumber(self, n) : 인스턴스 안에 있는 숫자 n을 빼라
# self.myData.remove(n) : myData 리스트의 n 원소 제거

    def getMax(self) : 인스턴스 안에 있는 모든 숫자들 중에서 가장 큰 수를 반환
        return max(self.myData)

# getMax(self) : 인스턴스 안에서 가장 큰 숫자는? 
# return max(self.myData) : myData 리스트의 가장 큰 수를 반환


def main():

    myMachine = maxMachine()

    '''
    테스트를 하고싶으면, 아래 부분을 수정합니다.
    '''

    myMachine.addNumber(1)
    myMachine.addNumber(2)
    myMachine.addNumber(3)
    myMachine.addNumber(2)

    print(myMachine.getMax())    # 3

    myMachine.removeNumber(3)

    print(myMachine.getMax())    # 2

    myMachine.removeNumber(2)

    print(myMachine.getMax())    # 2 | 2가 두개였어서 남아있던 2가 나옴

if __name__ == "__main__":
    main()

 

728x90
반응형
댓글