반응형
🔺 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
🔺 코드
(틀림)
반복문을 썼는데 실패
더보기
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
|
import java.util.*;
import java.io.*;
class Solution {
public int[] solution(int[] prices) {
int len = prices.length;
int[] answer = new int[len];
for(int i = 0 ; i < len ; i++) {
int num = prices[i];
int cnt = 0;
if(i == len-1) {
answer[i] = 0;
break;
}
for(int j = i + 1 ; j < len ; j++) {
if(prices[j] >= prices[i]) {
cnt++;
}
}
answer[i] = cnt;
}
return answer;
}
}
|
cs |
(정답)
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
35
36
37
|
import java.util.*;
import java.io.*;
public class Solution {
public static int[] solution(int[] prices) {
int len = prices.length;
int[] answer = new int[len];
Stack<Integer> stack = new Stack<>();
for(int i = 0 ; i < len ; i++) {
while(!stack.isEmpty() && prices[stack.peek()] > prices[i]) {
answer[stack.peek()] = i - stack.peek();
stack.pop(); // 답을 구했으므로 스택에서 제거
}
stack.push(i);
}
// 값을 구하지 못한 idx = 끝까지 가격이 떨어지지 않은 주식
while(!stack.isEmpty()) {
answer[stack.peek()] = prices.length - stack.peek() - 1; // 최대 기간
stack.pop();
}
return answer;
}
// 실행
public static void main(String[] args) {
int[] prices = {1, 2, 3, 2, 3};
int[] answer = solution(prices);
for(int i : answer) {
System.out.print(i + " ");
}
}
}
|
cs |
✅ 해결 아이디어
✔ 스택
- 스택이 비어있지 않고, 주식 가격이 떨어졌을 때 answer에 값 넣어주기 → 해당 인덱스는 pop
(예 ; i가 3이고 stack.peek()이 2인 경우, answer[stack.peek()]에 i - stack.peek()의 값인 1 (= 3 - 2)을 넣는다.
- 그 외 경우는 해당 인덱스를 push
- 끝까지 가격이 떨어지지 않은 주식 (=스택에서 끝까지 남아있는 수). 전체 길이에서 해당 인덱스를 빼고 pop
🔺 다른 풀이들
- 와 설명 짱이시다... 글로 설명을 어떻게 이렇게 풀어서 하시지.. 최고...
[프로그래머스] 스택/큐 주식가격 JAVA 자바풀이
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.제한사항 prices의 각 가격은 1 이상 10,000
annyeongworld.tistory.com
- 으아악 설명 너무 친절하시고 최고신데 내 머리가 따라가질 못함.. (그림 설명)
[프로그래머스] 주식가격(Stack) - JAVA
문제 링크 [프로그래머스] 주식가격 코딩테스트 연습 - 주식가격 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 s
girawhale.tistory.com
💬 느낀 점
스택을 이렇게 쓰라고 하면.. 나는 구현 연습을 더 해야할 것 같다.
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
✔ 풀이 감사합니다...
[프로그래머스] 주식가격(자바)
알고리즘 문제 풀이를 블로그에 올리는 이유는 풀이, 코드를 기록하기 위함이니 앞으로 문제를 다 긁어오기보다 링크만 두고 풀이가 잘 보이도록 포스팅 할 예정입니다!\[프로그래머스] 주식가
velog.io
반응형
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 괄호 회전하기 (0) | 2023.07.31 |
---|---|
[프로그래머스/Lv. 3] 디스크 컨트롤러 (JAVA) (0) | 2023.07.31 |
[프로그래머스/Lv. 0] 문자열 겹쳐쓰기 (0) | 2023.05.13 |
[프로그래머스/Lv. 0] 대소문자 바꿔서 출력하기 (0) | 2023.05.12 |
[프로그래머스/Lv. 0] 공백으로 구분하기 2 (0) | 2023.05.12 |