-
[프로그래머스] 뒤에 있는 큰 수 찾기 - Java공부/프로그래머스 2024. 8. 6. 23:31728x90
https://school.programmers.co.kr/learn/courses/30/lessons/154539
프로그래머스 뒤에 있는 큰 수 찾기 자바 풀이
난이도: Lv2
풀이
뒤에 부터 검사하여 더 큰수가 있는지 비교한다.
int[] numbers={2, 3, 6, 8, 5, 6, 4, 7} 라고 가정했을 때7보다 더 큰 수가 없으므로 -1, 그 후 7을 스택에 넣음4와 6을 비교했을 때 7이 더 크므로 7, 4를 스택에 넣음6과 4를 비교했을 때 4가 작아, 4를 스택에서 제거6과 7을비교했을 때 7이 더 크므로 7, 6을 스택에 넣음이런식으로 진행한다.가장 가까운 수 중 뒤에 있는 큰 수를 찾는 것이기 때문에,Stack에서 꺼낸 수와 비교했을 때 꺼낸 수가 더 작은 경우 제거하여도 상관없다.숫자를 비교하였을 때 가까운 수인 경우를 비교하며, 더 작은 수인 경우 비교할 때 이미 더 작기 때문에 비교할 필요가 없다.코드
import java.util.Stack; class Solution { public int[] solution(int[] numbers) { int[] answer = new int[numbers.length]; Stack<Integer> stack = new Stack<>(); for(int i=numbers.length-1;i>=0;i--){ while (!stack.empty()&&numbers[i]>=stack.peek()) { stack.pop(); } if(!stack.empty()){ answer[i]=stack.peek(); }else{ answer[i]=-1; } stack.push(numbers[i]); } return answer; } }
728x90반응형'공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 더 맵게 - Java (0) 2024.08.08 [프로그래머스] 주식가격 - Java (0) 2024.08.07 [프로그래머스] 롤케이크 자르기 - Java (0) 2024.08.05 [프로그래머스] 모음사전 - Java (0) 2024.08.01 [프로그래머스] [3차] 압축 - Java (0) 2024.07.31