[프로그래머스|JAVA] 주식 가격 | 스택 / 큐 사용 ❌ | 간단 풀이 | 스택 / 큐 방법 포함 ⭕️ | 풀이법 2️⃣가지

2025. 8. 24. 13:19·💻코딩/💡Programmers
728x90
반응형

[문제 링크]

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

[문제]

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.

prices return
[1, 2, 3, 2, 3] [4, 3, 1, 1, 0]

 


📍 [코드]

 

class Solution {
    public int[] solution(int[] prices) {
        int n = prices.length;
        int[] answer = new int[n];

        for (int i = 0; i < n; i++) {
            int cnt = 0;
            for (int j = i + 1; j < n; j++) {
                cnt++;
                if (prices[j] < prices[i]) break; // 떨어지면 멈춤
            }
            answer[i] = cnt;
        }
        return answer;
    }
}

 

💡 접근법

  • 이중 for문 사용
  • 현재 인덱스보다 다음 인덱스 값이 작으면 떨어진 것
    ➡️ 떨어지기 전까지 카운트 후 break

    ✅ 시간 복잡도가 O(N²)이지만, 이 문제 조건으로는 가능


 

📍 [Stack 활용]

import java.util.*;
class Solution {
    public int[] solution(int[] prices) {
        List<Integer> answer = new ArrayList<>();
        Stack<Integer> stack = new Stack<>();
        
        for(int i = prices.length - 1; i >= 0; i--) {stack.push(prices[i]);}
        
        while (!stack.isEmpty()) {
            int check = stack.get(stack.size() - 1);
            int cnt = 0;

                for (int i = stack.size() - 2; i >= 0; i--) { // 한 칸씩 내려가며 비교
                    cnt++;
                if (stack.get(i) < check) break;
                }

            answer.add(cnt);
            stack.pop(); 
        }
        return answer.stream().mapToInt(Integer::intValue).toArray();
    }
}

💡 접근법

  • 위와 같이 스택 한 칸씩 내려가며 비교하고
    ➡️ 값이 작아지면 멈춤
  • 값을 직접 삭제하지 않고,.get()으로 값만 가져와서 비교
  • 이후 값을 삭제하고 또 제일 위부터 탐색

 

💬 한 문제를 여러 방법으로 푸는 것은

나에게 큰 도움이 되는 것 같다. 

 

 

 

 

728x90
반응형

'💻코딩 > 💡Programmers' 카테고리의 다른 글

[프로그래머스|JAVA] 프로세스 | Queue 활용 ⭕️ | 자세한 코드 흐름 설명 💬  (0) 2025.08.24
[프로그래머스|JAVA] 올바른 괄호 | 스택 사용 ⭕️ | 간단 풀이 | 스택 사용 ❌ 방법 | 풀이법 2️⃣가지  (2) 2025.08.24
[프로그래머스|JAVA] 로또의 최고 순위와 최저 순위 | Set 활용, 향상된 for문 연습 중 💬, case 문  (4) 2025.08.14
[프로그래머스|JAVA] 같은 숫자는 싫어 🙅‍♀️ | ArrayList, stream 방식, 향상된 for문 활용  (1) 2025.08.14
[프로그래머스|JAVA] 의상 | 2️⃣번째 풀이 | Map 활용하여 간결 & 가독성 좋게 💡 , 향상된 for문, getOrDefault()  (4) 2025.08.14
'💻코딩/💡Programmers' 카테고리의 다른 글
  • [프로그래머스|JAVA] 프로세스 | Queue 활용 ⭕️ | 자세한 코드 흐름 설명 💬
  • [프로그래머스|JAVA] 올바른 괄호 | 스택 사용 ⭕️ | 간단 풀이 | 스택 사용 ❌ 방법 | 풀이법 2️⃣가지
  • [프로그래머스|JAVA] 로또의 최고 순위와 최저 순위 | Set 활용, 향상된 for문 연습 중 💬, case 문
  • [프로그래머스|JAVA] 같은 숫자는 싫어 🙅‍♀️ | ArrayList, stream 방식, 향상된 for문 활용
망꼬누나
망꼬누나
공부한 내용을 정리하는 공간입니다.
  • 망꼬누나
    망꼬누나의 개발 공부
    망꼬누나
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • ℹ️ 정보 및 실습 (19)
        • ☑️ Git & GitHub (8)
        • ☑️ 프로젝트 (6)
        • ☑️ 회고 및 후기 (5)
      • 🛠 CS (1)
      • 💻코딩 (88)
        • 💡Baekjoon (17)
        • 💡Programmers (71)
      • ✏️공부 (48)
        • 💡OS (1)
        • 💡Network (6)
        • 💡SpringBoot (9)
        • 💡JAVA (21)
        • 💡SQL (1)
        • 💡DB (2)
        • ☁️ Cloud (4)
        • 💡알고리즘 (4)
      • 📌 자격증 (6)
        • 📝정보처리기사 (3)
        • 📝SQLD (3)
  • 블로그 메뉴

    • 홈
    • github
  • 나의 GitHub Contribution 그래프
    Loading data ...
  • 인기 글

  • 태그

    자료구조
    네트워크
    Set
    Stream
    GIT
    프로그래머스 #JAVA
    프로그래머스
    데브코스
    동시성제어
    baekjoon
    github
    코딩테스트
    백엔드
    map
    S3
    알고리즘
    트랜잭션
    Java
    AWS
    자바
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.5
망꼬누나
[프로그래머스|JAVA] 주식 가격 | 스택 / 큐 사용 ❌ | 간단 풀이 | 스택 / 큐 방법 포함 ⭕️ | 풀이법 2️⃣가지
상단으로

티스토리툴바