Leetcode Java Design a Stack With Increment Operation

업데이트:

문제

Link

코드

class CustomStack {

  private int[] stack;
  private int top = -1;

  public CustomStack(int maxSize) {
    this.stack = new int[maxSize];
  }

  public void push(int x) {
    if (this.top < this.stack.length - 1) {
      this.top++;
      this.stack[this.top] = x;
    }
  }

  public int pop() {
    if (this.top != -1) {
      return this.stack[this.top--];
    }
    return -1;
  }

  public void increment(int k, int val) {
    for (int i = 0; i < Math.min(k, this.top + 1); i++) {
      this.stack[i] += val;
    }
  }

}

/**
 * Your CustomStack object will be instantiated and called as such:
 * CustomStack obj = new CustomStack(maxSize);
 * obj.push(x);
 * int param_2 = obj.pop();
 * obj.increment(k,val);
 */

결과

Link

설명

  1. increment 연산자를 제공하는 스택인 CustomStack을 만드는 문제이다.
    • 생성자인 CustomStack(int maxSize)은 maxSize 크기의 스택을 초기화한다.
    • 메서드인 push(int x)는 스택의 위에 x를 추가한다.
    • 메서드인 pop()은 스택의 위에 해당하는 값을 반환한다. 단, 스택이 비어있을 경우 -1을 반환한다.
    • 메서드인 increment(int k, int val)는 아래에서 k번째 값까지 val만큼 증가시켜준다. 값이 k개 미만인 경우 모든 값들을 증가시켜준다.
  2. CustomStack에 필요한 전역 변수를 정의한다.
    • stack은 값을 저장할 변수이다.
    • top은 값을 저장한 위치를 저장할 변수이다.
  3. 생성자인 CustomStack(int maxSize)을 정의한다.
    • stack을 maxSize의 정수 배열로 초기화한다.
    • top을 -1로 초기화한다.
  4. 메서드인 push(int x)를 정의한다.
    • top이 stack의 마지막 위치보다 작은 경우, top을 증가시키고 stack[top]에 x를 넣어준다.
  5. 메서드인 pop()을 정의한다.
    • top이 -1이 아닌 경우, stack[top]을 반환하고 top을 감소시킨다.
    • top이 -1인 경우, 스택의 값이 없으므로 -1을 반환한다.
  6. 메서드인 increment(int k, int val)를 정의한다.
    • 0부터 k 혹은 $top + 1$ 중 작은 범위 내 값들에 val을 더해준다.

소스

Sample Code는 여기에서 확인 가능합니다.

댓글남기기