프로그래머스 뒤에 있는 큰 수 찾기

2025. 7. 9. 16:53·코딩테스트/프로그래머스

링크 : https://school.programmers.co.kr/learn/courses/30/lessons/154539

문제 풀이

기존의 2중 for문을 통해 검사를 할 경우 최대 100만 x 100만의 시간 복잡도로 시간초과 오류가 발생

따라서 100만 x ?? 부분을 효율적으로 처리를 해야함


stack을 이용한 풀이

1. numbers를 순차적으로 진행

2. stack에 값이 있고, stack의 마지막 값에 해당하는 numbers값이 현재(i번째) numbers값 보다 작은 경우 stack 마지막 값을 i번째 값으로 설정

3. 이후 i를 stack에 추가


[9, 1, 5, 3, 6, 2]를 예시로 들면

9 -> 1 인 경우 stack은 [0, 1]이 쌓여있음 이후 5에 대해 검사를 하게 되면 위 2번 로직을 통해 1번째 index 값이 5로 저장이 됨

즉, 현재 기준 값(i)으로 stack의 값들을 처리해 나가면 됨

function solution(numbers) {
    const answer = new Array(numbers.length).fill(-1);
    const stack = [];
    
    for (let i = 0; i < numbers.length; i++) {
        while (stack.length > 0 && numbers[stack[stack.length - 1]] < numbers[i]) {
            const index = stack.pop();
            answer[index] = numbers[i];
        }
        stack.push(i);
    }
    
    return answer;
}

결론

stack자료구조를 활용해서 문제를 접근하면 됨

위에서 언급된 2번 로직을 생각하는게 이 문제의 핵심인 것 같음

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

프로그래머스 [3차] n진수 게임  (1) 2025.07.04
프로그래머스 옹알이 (2)  (0) 2025.07.04
프로그래머스 [1차] 뉴스 클러스터링  (0) 2025.07.04
프로그래머스 소수 만들기  (0) 2025.07.01
프로그래머스 방문 길이  (0) 2025.06.06
'코딩테스트/프로그래머스' 카테고리의 다른 글
  • 프로그래머스 [3차] n진수 게임
  • 프로그래머스 옹알이 (2)
  • 프로그래머스 [1차] 뉴스 클러스터링
  • 프로그래머스 소수 만들기
의현
의현
개발은 즐거워
  • 의현
    UIHYEON BLOG
    의현
  • 전체
    오늘
    어제
    • 분류 전체보기 (116)
      • 프론트엔드 (47)
        • JavaScript (47)
        • TypeScript (0)
        • HTML (0)
        • CSS (0)
        • React (0)
      • 프로젝트 (2)
        • Task Flow (2)
      • 코딩테스트 (66)
        • Binary Search (2)
        • bfs (Breadth-first s.. (4)
        • dfs (Deapth-first se.. (1)
        • Greedy (1)
        • Dynamic Programming (1)
        • two pointer (4)
        • 구현 (2)
        • LIS(Longest Increasi.. (0)
        • 문자열 (3)
        • 자료구조 (4)
        • 비트마스크 (2)
        • 수학 (2)
        • 프로그래머스 (40)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
의현
프로그래머스 뒤에 있는 큰 수 찾기
상단으로

티스토리툴바