728x90
안녕하세요. 그린주입니다 ๑'ٮ'๑
프로그래머스 코딩 테스트 시작!
문제 설명
초 단위로 기록된 주식 가격이 담긴 배열 prices가 매개변수로 주어질 때,
가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
prices의 길이는 2 이상 100,000 이하입니다.
예제 #1
입출력 예
int[] prices = {1, 2, 3, 2, 3}
입출력 예 설명 // 정답 : {4, 3, 1, 1, 0}
1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.
내 코드
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
Queue<Integer> queue = new LinkedList<>();
for (int i = 0; i < prices.length; i++) {
queue.offer(prices[i]);
}
int idx = 0;
while (!queue.isEmpty()) {
int item = queue.poll();
for (int i = (prices.length - queue.size()); i < prices.length; i++) {
if (item > prices[i]) { // 떨어졌을 경우 1초
answer[idx]++;
break;
} else if (item <= prices[i]) { // 떨어지지 않을 경우 ++
answer[idx]++;
}
}
idx++;
}
return answer;
}
}
좋아요 한 코드
내 코드는 뭔가 필요 없는 살을 붙인 느낌이랄까..
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;
}
}
긴 글 봐주셔서 감사합니다!
오늘도 행복한 하루 보내세요 ✿'◡'✿
728x90
728x90
'🌜 Algorithm > Programmers' 카테고리의 다른 글
정렬 - Lv2 가장 큰 수 ( 프로그래머스 / JAVA ) (0) | 2022.04.12 |
---|---|
정렬 - Lv1 K번째수 ( 프로그래머스 / JAVA ) (0) | 2022.04.06 |
스택/큐 - Lv3 다리를 지나는 트럭 ( 프로그래머스 / JAVA ) (0) | 2022.04.06 |
스택/큐 - Lv2 프린터 ( 프로그래머스 / JAVA ) (0) | 2022.03.16 |
스택/큐 - Lv1 기능개발 ( 프로그래머스 / JAVA ) (0) | 2022.03.15 |