농담곰담곰이의곰담농

2493. 탑

by 브이담곰

https://www.acmicpc.net/problem/2493

 

✔ 유형 : 스택

✔ 문제 풀이: 반복문으로 검사하면 최악의 경우 O(N^2)의 시간복잡도가 나온다. 이를 해결하기 위해 stack을 이용한다.

 

구해야 하는 답: 각 탑에서 발사한 레이저 신호를 수신한 탑의 번호 리스트.

 

 

코드

import sys
input=sys.stdin.readline # input함수 바꾸기

# input
N = int(input())
towers = list(map(int,input().split())) #list 자료구조지만 스택 사용 가능


stack = list()
answer = [0 for i in range(N)]

# 2. 
for i in range(N):
    # 1. 현재 스택에 값이 존재한다면?
    while(stack):
        if stack[-1][1] > towers[i]:
            answer[i]= stack[-1][0] + 1 
            break
        else:
            stack.pop()
            
    stack.append([i, towers[i]])
    
print(*answer)

'Coding Test > Baekjoon' 카테고리의 다른 글

2805. 나무 자르기  (0) 2024.07.11
3109. 뱀  (0) 2024.07.10
11866. 요세푸스 문제 0  (0) 2024.07.10
2468. 안전 영역  (0) 2024.07.10
10971. 외판원 순회 2  (0) 2024.07.10

블로그의 정보

농담곰담곰이의곰담농

브이담곰

활동하기