[17298] 오큰수 (스택)

2023. 6. 3. 22:45·Coding Test/Data Structure
728x90
 

17298번: 오큰수

첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에 수열 A의 원소 A1, A2, ..., AN (1 ≤ Ai ≤ 1,000,000)이 주어진다.

www.acmicpc.net

 

분석

  • 스택에 새로 들어오는 수 > top에 존재하는 수 : 새 수는 오큰수, top pop하면서 새 수 push
  • 오큰수를 구한 후 수열에서 오큰수가 존재하지 않는 숫자에 -1 출력
  • 순서
    1. 스택이 채워져 있거나 a[idx] > a[top]인 경우 pop한 인덱스를 이용하여 정답 수열에 오큰수를 저장.
      • pop은 조건을 만족하는 동안 계속 반복
    2. 현재 인덱스를 스택에 push하고 다음 인덱스로 넘어감
    3. 수열의 길이만큼 반복하고 스택에 남아있는 인덱스에 -1 저장

 

풀이

import sys
n = int(input())
a = list(map(int, input().split()))
stack = []
res = [0]*n # 정답리스트

for i in range(n):
    while stack and a[stack[-1]] < a[i]: # 스택 탑 인덱스가 가르키는 수 < 현재 수
        res[stack.pop()] = a[i] # 정답 리스트에 오큰수를 현재 수로 저장
    stack.append(i)

while stack: # 반복문을 다 돌고 나왔는데 스택이 비어 있지 않다면 빌 때까지
    res[stack.pop()]=-1 #스택에 쌓인 index에 -1을 넣기

for i in range(n):
    sys.stdout.write(str(res[i]) + " ")

 

 

 

 

728x90
저작자표시 비영리 변경금지
'Coding Test/Data Structure' 카테고리의 다른 글
  • [14425] 문자열 집합 (set)
  • [2164] 카드2 (큐, 덱)
  • [12891] DNA 비밀번호 (슬라이딩 윈도우)
  • [1874] 스택 수열(스택)
Karla Ko
Karla Ko
𝘾𝙤𝙣𝙩𝙞𝙣𝙪𝙤𝙪𝙨𝙡𝙮 𝙄𝙢𝙥𝙧𝙤𝙫𝙞𝙣𝙜, 𝘾𝙤𝙣𝙨𝙩𝙖𝙣𝙩𝙡𝙮 𝘿𝙚𝙫𝙚𝙡𝙤𝙥𝙞𝙣𝙜 𝙔𝙚𝙨!
    250x250
  • Karla Ko
    karlaLog
    Karla Ko
  • 전체
    오늘
    어제
    • Total (467)
      • Spring (19)
      • JPA (4)
      • Cloud & Architecture (15)
        • Kubernetes (5)
        • Docker (3)
        • MSA (2)
        • GCP (1)
        • AWS (4)
      • Devops (1)
      • Message Queue (4)
        • Kafka (2)
        • RabbitMQ (2)
      • Git (4)
      • DB (4)
      • Java (9)
      • Python (4)
      • CS (11)
        • OS (8)
        • Network (2)
        • Algorithm (1)
      • Coding Test (392)
        • programmers (156)
        • Graph (43)
        • DP (37)
        • Search (31)
        • Tree (13)
        • Data Structure (26)
        • Combination (12)
        • Implement (18)
        • Geedy (23)
        • Sort (7)
        • Math (21)
        • geometry (2)
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    최단거리
    최대공약수
    백준
    알고리즘
    다익스트라
    그래프
    파이썬
    트리
    LIS
    구간합
    재귀
    스택
    플로이드워셜
    정렬
    조합
    자료구조
    BFS
    동적계획법
    큐
    DP
    프로그래머스
    최소신장트리
    덱
    힙
    그리디
    월간코드챌린지
    Algorithm
    DFS
    구현
    이분탐색
  • hELLO· Designed By정상우.v4.10.3
Karla Ko
[17298] 오큰수 (스택)
상단으로

티스토리툴바