반응형
문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이 (java)
import java.util.ArrayList;
import java.util.List;
public class StockPrices {
public static void main(String[] args) {
int[] arr = {1,2,3,2,3};
solution(arr);
}
public static int[] solution(int[] prices) {
List<Integer> secondsArr = new ArrayList<>();
for (int i = 0; i < prices.length; i++) {
int seconds = 0;
for (int j = i; j < prices.length; j++) {
if (prices[i] > prices[j] || j == prices.length-1) {
secondsArr.add(seconds);
break;
}else{
seconds ++;
}
}
}
return secondsArr.stream().mapToInt(Integer::intValue).toArray();
}
}
풀이 방법
특별히 어려운 로직은 없고, 스택/큐의 문제임을 무시하고, 이중 for문으로 해결 가능
- List -> Array
list.stream().mapToInt(Integer::intValue).toArray();
다른사람의 풀이 (java)
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;
}
}
Godd Idea : 거의 비슷. seconds 변수를 사용하지 않고 바로 index로 접근해서 카운트하고, 조건문이 조금 다른게 차이
느낀점
- 스택/큐를 사용하지 않는대신, 아래 2가지 방법을 사용 가능
- temp 변수에 이전 값 or 이전까지의 특정값(최대값 등)을 저장해서 비교/처리 가능
- 이중 for문 등을 사용하되, list의 index로 값에 직접 접근 : arr[i]++;
- 물론 코드 짜고, 정리하지 않아 지저분한걸 감안해도, 코드가
가독성이 떨어지고,
그렇다고 재사용성이 좋지도 않고,
아이디어가 좋은 것도 아니고,
그냥 문제를 푼 느낌이 없지 않아 있다 - 하지만, 코드를 직독직해 하듯이 풀었기에, 초보자가 보기에는 오히려 편할수도?!
반응형
'개발 > 코딩 테스트' 카테고리의 다른 글
[알고리즘] 프로그래머스 > 해시 > 위장 (0) | 2022.08.05 |
---|---|
[알고리즘] 프로그래머스 > 해시 > 전화번호 목록 (0) | 2022.08.04 |
[알고리즘] 프로그래머스 > 스택/큐 > 같은 숫자는 싫어 (0) | 2022.08.01 |
[알고리즘] 프로그래머스 > 정렬 > 가장 큰 수 (0) | 2022.07.27 |
[알고리즘] 프로그래머스 > 정렬 > 가장 큰 수 (0) | 2022.07.24 |