코딩테스트
[JAVA] 프로그래머스 주식 가격
mingg123
2021. 4. 13. 21:16
programmers.co.kr/learn/courses/30/lessons/42584
코딩테스트 연습 - 주식가격
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00
programmers.co.kr
1차 코드
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
List<Integer> test = new ArrayList<Integer>();
int count = 0;
for(int i = 0; i< prices.length; i++) {
int pri = prices[i];
boolean flag = false;
count = 0;
for(int j = i+1; j< prices.length; j++) {
if(flag == false) {
if(pri <= prices[j]) {
count++;
if(j == prices.length -1)
// test.add(count);
answer[i] = count;
} else {
count++;
test.add(count);
answer[i] = count;
flag = true;
}
}
}
}
answer[prices.length-1] = 0;
// test.add(0);
// test = test.toArray(new Integer[test.size()]);
return answer;
}
}
시간초과가 났다.
2차 코드
필요없는 if문을 제거했다.
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
List<Integer> test = new ArrayList<Integer>();
int count = 0;
for(int i = 0; i< prices.length; i++) {
int pri = prices[i];
boolean flag = false;
count = 0;
for(int j = i+1; j< prices.length; j++) {
if(pri <= prices[j]) {
count++;
if(j == prices.length -1)
answer[i] = count;
} else {
count++;
answer[i] = count;
break;
}
}
}
answer[prices.length-1] = 0;
return answer;
}
}
성공..
if문 하나가 많이 성능면에서 차이가 많이 큰가보다 ..
다른 날 도전
프로그래머스에서 푼 문제로 등록이 되어 있지 않아서 안 푼줄 알고 풀었다.
class Solution {
public int[] solution(int[] prices) {
int answer [] = new int[prices.length];
for(int i = 0 ; i< prices.length-1; i++) {
int target = prices[i];
int count = 0;
for(int j = i+1; j< prices.length; j++) {
if(target <= prices[j]) {
count++;
} else {
count++;
break;
}
}
answer[i] = count;
}
answer[prices.length -1] = 0;
return answer;
}
}
성공!