백준#1668 트로피 진열

정은경·2021년 11월 10일
0

알고리즘

목록 보기
43/125

문제


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

나의 풀이

trophy_count = int(input())

trophies = []
for _ in range(trophy_count):
    trophies.append(int(input()))

left_view_count = 1
trophies.reverse()
prev_height = trophies[0]
for index, trophy in enumerate(trophies):
    if index == 0:
        continue
    if prev_height < trophy:
        left_view_count += 1
    prev_height = trophy if trophy > prev_height else prev_height


right_view_count = 1
trophies.reverse()
prev_height = trophies[0]
for index, trophy in enumerate(trophies):
    if index == 0:
        continue
    if prev_height < trophy:
        right_view_count += 1

    prev_height = trophy if trophy > prev_height else prev_height

print(right_view_count)
print(left_view_count)

남의 풀이

  • 선반 위에 올려져 있는 트로피들에 대하여 왼쪽에서, 오른쪽으로 봤을 때 보이는 트로피의 수를 각각 구함
  • 트로피의 개수 N이 최대 50이므로 단순히 구현하면 됨
def ascending(items):
    now = items[0]
    result = 1
    for i in range(1, len(items)):
        if now < items[i]:
            result += 1
            now = items[i]
    return result


n = int(input())
array = []

for _ in range(n):
    array.append(int(input()))

print(ascending())
array.reverse()
print(ascending(array))
profile
#의식의흐름 #순간순간 #생각의스냅샷

0개의 댓글