Always Be Wise

스택 : 탑(백준 2493번) 본문

알고리즘/백준

스택 : 탑(백준 2493번)

bewisesh91 2021. 11. 17. 23:44
728x90

▶ 문제 : https://www.acmicpc.net/problem/2493

 

2493번: 탑

첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1

www.acmicpc.net

##### 문제 #####
# 탑들의 개수 N과 탑들의 높이가 주어질 때, 
# 각각의 탑에서 발사한 레이저 신호를 어느 탑에서 수신하는지를 알아내는 프로그램을 작성하라.

##### 입력 #####
# 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. 
# N은 1 이상 500,000 이하이다. 
# 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 
# 탑들의 높이는 1 이상 100,000,000 이하의 정수이다.

##### 출력 #####
# 첫째 줄에 주어진 탑들의 순서대로 각각의 탑들에서 발사한 레이저 신호를 
# 수신한 탑들의 번호를 하나의 빈칸을 사이에 두고 출력한다. 
# 만약 레이저 신호를 수신하는 탑이 존재하지 않으면 0을 출력한다.

 

▶ 접근 방법

 

▶ 풀이 코드

import sys

N = int(input())
top_list = list(map(int, sys.stdin.readline().split()))
stack = [top_list[-1]]
result = [0]* N

for i in reversed(range(N-1)):
    while stack :
        if top_list[i] > stack[-1] :
            index = top_list.index(stack[-1])
            result[index] = i+1
            stack.pop()
        else :
            break
    stack.append(top_list[i])

for i in result:
    print(i, end = " ")

 

▶ 관련 링크

2021.11.17 - [알고리즘] - 스택(Stack)이란?

2021.11.17 - [알고리즘] - 스택 : 스택(백준 10828번)

2021.11.17 - [알고리즘] - 스택 : 제로(백준 10773번)

2021.11.17 - [알고리즘] - 스택 : 괄호(백준 9012번)

2021.11.17 - [알고리즘] - 스택 : 막대기(백준 17608번)

2021.11.17 - [알고리즘] - 스택 : 원 영역(백준 10000번)

2021.11.17 - [알고리즘] - 스택 : 괄호의 값(백준 2504번)

2021.11.17 - [알고리즘] - 스택 : 크게 만들기(2812번)

'알고리즘 > 백준' 카테고리의 다른 글

스택 : 괄호의 값(백준 2504번)  (0) 2021.11.17
스택 : 원 영역(백준 10000번)  (0) 2021.11.17
스택 : 막대기(백준 17608번)  (0) 2021.11.17
스택 : 괄호(백준 9012번)  (0) 2021.11.17
스택 : 제로(백준 10773번)  (0) 2021.11.17
Comments