더북(TheBook)

연습 문제 2.2: 함수형 스택

이 연습 문제에서는 원소를 내부에 저장하되, 후입선출 순서로 꺼낼 수 있는 데이터 타입인 스택을 작성해보자.

함수형 원칙에 따라 스택은 불변이어야 한다. 즉, 원소를 푸시하면 새 스택이 반환되고 팝하면 팝한 원소와 새 스택 인스턴스가 들어 있는 튜플(쌍)이 반환된다. 다음 예제 코드를 보라. 이 코드는 여러분의 FunStack 구현과 함께 제대로 작동해야 한다.

@Test
fun `push into the stack`(){
    val stack1 = FunStack<Char>()
    val stack2 = stack1.push('A')
    expectThat(stack1.size()).isEqualTo(0)
    expectThat(stack2.size()).isEqualTo(1)
}

@Test
fun `push push pop`(){
    val (b, stack) = FunStack<Char>()
        .push('A')
        .push('B')
        .pop()
    expectThat(stack.size()).isEqualTo(1)
    expectThat(b).isEqualTo('B')
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.