[프로그래머스/Python] 뒤에 있는 큰 수 찾기

2023. 9. 5. 02:03· Algorithm/Programmers
def solution(numbers):
    answer = [-1]
    stack = [numbers[-1]]
    
    for i in range(len(numbers)-2, -1, -1):
        while stack and stack[-1] <= numbers[i]: # 같아도 pop
            stack.pop()
        
        if stack:
            answer.append(stack[-1])
        else:
            answer.append(-1)
            stack.append(numbers[i])
        
        if numbers[i] > numbers[i-1]:
            stack.append(numbers[i])
    
    answer.reverse()
    return answer

백준-탑 문제와 유사하다.

stack에 큰 숫자들을 쌓는다. 현재 top보다 큰 숫자가 나오면 pop()을 해준다.

스택이 비어있으면, 현재 숫자보다 큰 숫자가 뒤에 없었다는 뜻이므로 -1을 넣어준다.

스택이 남아 있다면, 현재 숫자의 뒤에 있는 큰 수는 top 이다.

 

그리고 마지막에 현재 값도 넣어주는데, 현재 값이 다음 값보다는 큰 수일 수 있기 때문이다.

(사실 if문 없어도 될 것 같다. 작으면 알아서 pop 될거니까)

 

for문을 반대로 돌아서 답을 넣어줬으니, 답도 반대로 출력해주면 된다.

 

def solution(numbers):
    n = len(numbers)
    stack = [] # idx 스택
    answer = [-1] * n
    
    for i in range(n):
        while stack and numbers[i] > numbers[stack[-1]]:
            idx = stack.pop()
            answer[idx] = numbers[i]
        stack.append(i)
    return answer

탑에서 익힌 풀이를 그대로 써도 정답이다!

idx를 이용한 스택을 사용한다.

스택의 top보다 큰 숫자를 만났을 때, 그 동안의 index의 answer에 해당 숫자를 넣어주는 방법! (몰아서 처리랄까?)

 

굳이 한번 더 코드를 줄이자면 아래와 같다

answer[stack.pop()] = numbers[i]

'Algorithm > Programmers' 카테고리의 다른 글

[프로그래머스/Python] 베스트앨범  (0) 2023.09.13
[프로그래머스/Python] 의상  (0) 2023.09.12
[프로그래머스/Python] 전화번호 목록  (0) 2023.09.12
[프로그래머스/Python] 스택/큐  (0) 2023.09.05
[프로그래머스/Python] 짝지어 제거하기  (0) 2023.09.05
'Algorithm/Programmers' 카테고리의 다른 글
  • [프로그래머스/Python] 의상
  • [프로그래머스/Python] 전화번호 목록
  • [프로그래머스/Python] 스택/큐
  • [프로그래머스/Python] 짝지어 제거하기
빵빵0
빵빵0
(아직은) 공부하고 정리하는 블로그입니다.
빵빵0
Hack Your World
빵빵0
전체
오늘
어제
  • 분류 전체보기 (69)
    • Error Handling (3)
    • Project (1)
    • Computer Science (4)
      • Data Structure (2)
      • Database (1)
      • Cloud (0)
      • OS (0)
      • Infra, Network (1)
      • AI (0)
    • Language (3)
      • Go (3)
      • Rust (0)
      • Python (0)
      • Java (0)
    • Algorithm (39)
      • BaekJoon (18)
      • Programmers (7)
      • LeetCode (6)
      • NeetCode (8)
    • SW Books (9)
      • gRPC Up & Running (1)
      • System Design Interview (2)
      • 스프링 입문을 위한 자바 객체지향의 원리와 이해 (6)
      • 블록체인 해설서 (0)
      • 후니의 쉽게 쓴 CISCO 네트워킹 (0)
    • Own (2)
      • Personal (0)
      • Novel (0)
      • Comics & Animation (0)
      • Memo (2)
    • BlockChain (4)
      • Issues (0)
      • Research (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • NeetCode
  • go 버그
  • 해시
  • 블록체인
  • decimal
  • 그리디
  • go
  • Greedy
  • BEAKJOON
  • DP
  • 큐
  • go 에러
  • Palindrome
  • Python
  • Programmers
  • 2024
  • golang
  • 스택
  • Hash Table
  • two pointer
  • BFS
  • MongoDB
  • go 데이터
  • ohlcv
  • candlechart
  • KBW
  • LeetCode
  • 프로그래머스
  • 백준
  • BaekJoon

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
빵빵0
[프로그래머스/Python] 뒤에 있는 큰 수 찾기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.