Leetcode - 1441 스택 작업으로 어레이 구축 Java

해설

  • 코딩보다 문제 이해하는게 어려웠는데
  • 그냥 두개의 큐가 있고, 뒤의 정수로 주어진 N이라는 이름의 큐에서 answer라는 큐에 숫자를 집어넣는 상황인데
  • 위 상황에서 주어진 정수배열 target이랑 동일하게 만들려면 어떤 큐 명령이 들어가야 하는가?!?!? 에 대한 문제
  • 참고로 n=7이면 아래 코드처럼 표현한 큐가 있다는거임 ㅇㅇ!
int[] {1,2,3,4,5,6,7}

풀이를 위해서

  • 각 숫자별(X) 두가지 상황이 있는데요
    • target에 x 가 포함되어 있는 경우
      : 푸쉬
    • target에 x 가 없는 경우
      : 푸쉬하고 팝
import java.util.ArrayList;
import java.util.List;

public class Solution {

    public List<String> buildArray(int[] target, int n) {
        final String PUSH = "Push";
        final String POP = "Pop";
        int idx = 0;
        int limit = target.length;
        List<String> answer = new ArrayList<>();
        for (int i = 1; i <= n; i++) {
            if (limit > idx) {
                if (target[idx] == i) {
                    //in target
                    idx++;
                    answer.add(PUSH);
                } else {
                    //not in target
                    answer.add(PUSH);
                    answer.add(POP);
                }
            }
            else {
                //return answer;
            }

        }
        return answer;
    }

    public static void main(String[] args) {
        tester(new int[]{1, 3}, 3);
        tester(new int[]{1, 2, 3}, 3);
        tester(new int[]{1, 2}, 4);
        tester(new int[]{2, 3, 4}, 4);
        tester(new int[]{1,2,3,4,5,  7},7);
        tester(new int[]{7},7);

    }

    private static void tester(int[] target, int n) {
        Solution s = new Solution();
        List<String> ret = s.buildArray(target, n);
        System.out.println(ret.toString());
    }
}

좋은 웹페이지 즐겨찾기