프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/42584)
자바 Level 2 문제의 주식가격 이다.
문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
-
prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
-
prices의 길이는 2 이상 100,000 이하입니다.
로직을 다시 짜내려갔다. 출력 값을 받아보고 문제가 있으면 다시 지우고 다시 쓰기를 반복하며 마무리하였는데, 체크해 줄 포인트와 for문에서 변수의 선언과 continue; break; 의 사용점에 따라 로직의 결과가 천차만별로 변한다는 것을 깨닫게 되었다. 반복문을 사용할 줄 안다는 이야기는 제어문의 제어와 변수 선언 , 그리고 그안에서 이루어질 로직들의 과정을 정리할 줄알고 알맞은 지점과 순서에 변수나 제어를 할 줄 알아야 가능하다는 부분에서 배움을 얻어간 것 같아 개인적으로 기쁘고 또한 감사히 생각해보고 있다.
마지막 수는 무조건 0 그 전 수는 무조건 1이라는 점을 감안하여 만든 로직이다.
second 라는 변수 대신에 인덱스 차이 값인 j -i , (prices.length -1) -1 , (prices.length -2) -1 값을 사용하여 맺고 끊음을 정했다. 개인적으로 아쉬움이 남는 로직이기에 문제를 풀어가는 와중에 다시 한번 만들어보고 싶은 마음이 크게 들었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
package programmers_주식가격;
public class subClass3 {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length]; // 길이만큼증가
for (int i = 0; i < prices.length; i++) {
if (i != prices.length - 1 && prices[i] > prices[i + 1]) {
answer[i] = 1;
continue;
} // <
else if (i == prices.length - 1) {
answer[i] = 0;
break;
}
for (int j = i + 1; j < prices.length - 1; j++) {
if (prices[i] > prices[j]) {
answer[i] = j - i;
break;
} else {
answer[i] = (prices.length - 1) - i;
} // <
}
}
answer[answer.length - 2] = 1;
return answer;
}
}
|
cs |
'자바 초급문제로 맨땅에 해딩하기' 카테고리의 다른 글
자바 Level 2 문제, 2-1. 프린터 진행 2일차 (0) | 2020.04.19 |
---|---|
자바 Level 2 문제, 2. 프린터 진행 중 (0) | 2020.04.18 |
자바 Level 2 문제, 1. 주식가격 진행 중 (0) | 2020.04.15 |
자바 초급문제 28. 정수 내림차순으로 배치하기 (0) | 2020.04.14 |
자바 초급문제 27. 자연수 뒤집어 배열로 만들기 (0) | 2020.04.14 |