본문 바로가기

알고리즘/탐색

파이썬 | 백준 | 1668 | 트로피 진열

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

solution

 

left_seen : 왼쪽에서 봤을 때 보이는 개수

right_seen : 오른쪽에서 봤을 때 보이는 개수

left_max : 왼쪽에서 봤을 때 높이가 가장 큰 트로피. 탐색하다가 더 큰 트로피가 나오면 left_seen +1 한 후 값을 해당 인덱스의 트로피 높이로 저장한다.

right_max : 오른쪽에서 봤을 때 높이가 가장 큰 트로피. 탐색하다가 더 큰 트로피가 나오면 right_seen+1 한 후 값을 해당 인덱스의 트로피 높이로 저장한다.

import sys

N = int(sys.stdin.readline())
trophy = []

for i in range(N):
    trophy.append(int(sys.stdin.readline()))


left_max = 0
right_max = 0

left_seen = 0
right_seen = 0

for i in range(N):
    if trophy[i] > left_max :
        left_seen += 1
        left_max = trophy[i]
    if trophy[len(trophy)-i-1] > right_max:
        right_seen += 1
        right_max = trophy[len(trophy)-i-1]

print(left_seen)
print(right_seen)

29380KB

60ms