Search

뒤에 있는 큰 수 찾기

알고리즘
연습문제
플랫폼
프로그래머스
JCF
ArrayDeque
상태
해결
생성 일시
2024/01/09 10:56
최종 편집 일시
2024/01/11 10:54

문제 설명

해결과정

Solution.java

import java.util.*; class Solution { public int[] solution(int[] numbers) { int[] answer = new int [numbers.length]; ArrayDeque<Integer> stack = new ArrayDeque<Integer>(); // 초기 값 집어 넣기 stack.addLast(0); // 변수 선언 구간 // int num = 0; int index = 0; int tempindex = 0; for(int num : numbers) { // 현재 numbers의 원소를 num에 저장 // num = numbers[i]; while(true) { // 현재 for문으로 방문한 인덱스가 가르키는 값(num) 과 stack의 인덱스가 가르키는 값(numbers[index]) 비교 if(stack.isEmpty()) { stack.addLast(index); break; } else { // 가장 최근에 있던 값을 가져오기(인덱스) tempindex = stack.getLast(); // 현재 원소가 스택이 가르키는 원소보다 작다면 if(num <= numbers[tempindex]) { stack.addLast(index); break; } // 현재 원소가 스택이 가르키는 원소보다 크다면 else { // answer의 index의 원소를 현재 num으로 변경 answer[tempindex] = num; // 스택에서 현재 원소 제거 stack.removeLast(); } } } index++; } while(!stack.isEmpty()) { answer[stack.removeLast()] = -1; } return answer; } // ArrayDeque 초기화 public void initializeArrayDeque (int[] numbers) { ArrayDeque<Integer> stack = new ArrayDeque<Integer>(); stack.addLast(0); } }
Java
복사