728x90
반응형
이번 문제는 솔직히 너무 쉬웠다. 굳이 Queue를 사용할 필요도 없었고 금방 끝냈던거같다.
근데 문제를 이해하는데 조금 걸렸다.
그럼 이제 문제를 한번 보자.
문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
입출력 예
prices | return |
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
입출력 예 설명
- 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
- 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
- 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
- 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
- 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.
문제 풀이
해당 초 가격이 해당 초 이후 가격보다 떨어지는 시점까지 몇초걸리는지 return 하는것
(입출력 예 설명을 자세히 보면 될거같다)
나의 소스
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
int[] answer = {};
// 답을 넣을 List
List<Integer> answerList = new ArrayList<>();
//초별로 가격 요소에 접근을 해야함
for(int i = 0; i<prices.length;i++){
int count = 0;
for(int j = i;j<prices.length;j++){
if(j == i){
continue;
}else{
if(prices[i] <= prices[j]){
count++;
}else{
count++;
break;
}
}
}
answerList.add(count);
}
answer = new int[answerList.size()];
for(int i = 0;i < answerList.size();i++){
answer[i] = answerList.get(i);
}
return answer;
}
}
나는 바깥 for문으로는 각초의 가격에 접근을 하였다.
for(int i = 0; i<prices.length;i++){
}
그리고 그안에는 해당 초 이후의 가격에 접근하여서 비교하였다.
int count = 0; //초를 세기 위해서
for(int j = i;j<prices.length;j++){
if(j == i){ //다음 index부터 확인하기 위해서
continue;
}else{
if(prices[i] <= prices[j]){ //가격이 작거나 같으면 count++하고 다음걸로
count++;
}else{
count++; //가격이 떨어졌다면 count++하고 break해서 다음걸로 이동
break;
}
}
}
answerList.add(count);
위 두작업들만 해주면 이문제는 끝이다.
느낀점
1. 이중 for문이라고 쫄지말고 일단 문제를 풀어봐라
2. Queue에서는 index로 값에 접근을 못한다. index를 사용하고 싶다면 List를 사용해라.
반응형
'코딩일기 > 알고리즘' 카테고리의 다른 글
[프로그래머스 : 레벨 2] 더 맵게 (feat. PriorityQueue , Java) (0) | 2021.05.28 |
---|---|
[자료구조] 힙(Heap) 이란 (0) | 2021.05.27 |
[프로그래머스 : 레벨 2] 다리를 지나는 트럭 : Queue(Java) (0) | 2021.05.26 |
[프로그래머스 : 레벨2] 프린터(java) (0) | 2021.05.22 |
[프로그래머스 : 레벨2] 기능개발 : 큐 사용(Java) (0) | 2021.05.21 |