728x90
반응형
🔶코딩테스트
≣ 목차
/ 오늘의 TIL /
코딩테스트
https://school.programmers.co.kr/learn/courses/30/lessons/42584
정답
ArrayDeque<Integer> stack = new ArrayDeque<>();
int len = prices.length;
int[] answers = new int[len];
//stack 초기값 설정
stack.push(0);
for (int i = 1; i < len; i++) {
//스택을 사용해 이전 가격과 현재 가격 비교
while (!stack.isEmpty() && prices[stack.peek()] > prices[i]) {
//주식 가격이 떨어진 경우
int idx = stack.pop();
answers[idx] = i - idx;
}
stack.push(i);
}
//주식 가격이 떨어지지 않은 경우
while (!stack.isEmpty()) {
int idx = stack.pop();
answers[idx] = len - 1 - idx;
}
return answers;
숏코딩
class Solution {
public int[] solution(int[] prices) {
int len = prices.length;
int[] answer = new int[len];
int i, j;
for (i = 0; i < len; i++) {
for (j = i + 1; j < len; j++) {
answer[i]++;
if (prices[i] > prices[j])
break;
}
}
return answer;
}
}
시간 초과
채점 결과
정확성: 66.7
효율성: 13.3
합계: 80.0 / 100.0
import java.util.*;
public class Solution {
/**
*
* @param prices 주식 가격이 담긴 원본 배열
* @return 가격이 떨어지지 않은 기간(초)
*/
public static int[] solution(int[] prices) {
ArrayDeque<Integer> stack = new ArrayDeque<>();
Map<Integer, Integer> map = new HashMap<>();
int len = prices.length;
for (int i = 0; i < len; i++) {
map.put(i, prices[i]);
}
A: for (int i = 0; i < len-1; i++) {
for (int j = i+1; j < len; j++) {
//주식 가격이 떨어지지 않은 경우
if (map.get(i) <= map.get(j)) {
stack.push(i);
}
//주식 가격이 떨어진 경우는 1번만 추가
else {
stack.push(i);
continue A;
}
}
}
int[] answer = new int[len];
//스택이 비어있을 때까지 데이터 추가
while (!stack.isEmpty()) {
answer[stack.pop()]++;
}
return answer;
}
public static void main(String[] args) {
int[] a = {1, 2, 3, 2, 3};
solution(a);
}
}
728x90
반응형
'Blog > TIL' 카테고리의 다른 글
[240603] JPA의 핵심, 연관관계의 주인 설정 (0) | 2024.06.03 |
---|---|
[240602] JPA 영속성 컨텍스트 (0) | 2024.06.02 |
[240531] 처음으로 배포를 해보다 (0) | 2024.05.31 |
[240530] 도메인 연관 관계의 중요성 (0) | 2024.05.30 |
[240529] 직접 해봐야 안다 (0) | 2024.05.29 |
댓글