728x90
https://school.programmers.co.kr/learn/courses/30/lessons/154539
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
1. Java
/* DP (Dynamic Programming) (동적계획법) */
class Solution {
public int[] solution(int[] numbers) {
int len = numbers.length;
int[] answer = new int[len];
for ( int i = 0; i < len; ++i ) {
answer[i] = -1;
}
int max = 0;
for ( int i = len-1; i >= 0; --i ) {
if ( max < numbers[i] ) {
max = numbers[i];
continue;
}
for ( int j = i+1; j < len; ++j ) {
if ( numbers[i] < numbers[j] ) {
answer[i] = numbers[j];
break;
} else if ( numbers[i] == numbers[j]
|| numbers[i] < answer[j] ) {
answer[i] = answer[j];
break;
}
}
}
return answer;
}
}
/* Stack (스택) */
import java.util.*;
class Solution {
public int[] solution(int[] numbers) {
int len = numbers.length;
int[] answer = new int[len];
for ( int i = 0; i < len; ++i ) {
answer[i] = -1;
}
Stack<Integer> stack = new Stack<>();
for ( int i = 0; i < len; ++i ) {
while ( stack.size() > 0 && numbers[stack.peek()] < numbers[i] ) {
answer[stack.pop()] = numbers[i];
}
stack.push(i);
}
return answer;
}
}
2. Python
def solution(numbers):
n = len(numbers)
answer = [-1 for i in range(n)]
m = 0
for i in range(n-1, -1, -1) :
if m < numbers[i] :
m = numbers[i]
continue
for j in range(i+1, n) :
if numbers[i] < numbers[j] :
answer[i] = numbers[j]
break
elif numbers[i] == numbers[j] or numbers[i] < numbers[j] :
answer[i] = answer[j]
break
return answer
def solution(numbers):
n = len(numbers)
answer = [-1 for i in range(n)]
stack = []
for i in range(0, n) :
while len(stack) > 0 and numbers[stack[-1]] < numbers[i] :
answer[stack.pop()] = numbers[i]
stack.append(i)
return answer
반응형
'코딩 문제 풀기 ( Algorithm problem solving ) > 프로그래머스 ( Programmers )' 카테고리의 다른 글
[프로그래머스(Programmers)][Java,Python] (Lv2) 숫자 변환하기 (0) | 2025.04.08 |
---|---|
[프로그래머스(Programmers)][Java,Python] (Lv2) 택배상자 (0) | 2025.04.08 |
[프로그래머스(Programmers)][Java,Python] (Lv2) 롤케이크 자르기 (0) | 2025.04.02 |
[프로그래머스(Programmers)][Java,Python] (Lv2) 할인 행사 (0) | 2025.04.02 |
[프로그래머스(Programmers)][Java,Python] (Lv2) 연속 부분 수열 합의 개수 (0) | 2025.04.02 |