📝 문제
💡 민식이는 “오민식”이라는 팀이름으로 수없이 많은 로봇대회를 우승했다.
따라서 민식이의 집에는 트로피가 많다.
민식이는 트로피를 어떤 선반 위에 올려놨다.
이 선반은 민식이의 방문을 열고 들어가자마자 선반의 왼쪽이 보인다.
다른말로 하자면, 뒤의 트로피가 앞의 트로피에 가려져 있다는 말이다.
안타깝게도, 높이가 큰 트로피가 높이가 작은 트로피의 왼쪽에 있다면,
높이가 작은 트로피는 큰 트로피에 가려서 보이지 않게 된다.
트로피는 자기의 앞에 자기보다 높이가 작은 트로피가 있을 때만 보이게 된다.
민식이는 선반을 180도 회전시켜서 트로피가 보이는 개수를 변하게 할 수도 있다.
선반위에 올려져 있는 트로피의 높이가 주어졌을 때, 왼쪽에서 봤을 때 보이는 개수와,
오른쪽에서 봤을 때 보이는 개수를 출력하는 프로그램을 작성하시오.
⚙️ 입력 : 첫째 줄에 트로피의 개수 N (1 ≤ N ≤ 50)이 주어진다.
둘째 줄부터 N개의 줄에 왼쪽의 트로피부터 차례대로 높이가 주어진다.
트로피의 높이는 100보다 작거나 같은 자연수이다.
⚙️ 출력 : 첫째 줄에 왼쪽에서 봤을 때 보이는 개수,
둘째 줄에 오른쪽에서 봤을 때 보이는 개수를 출력한다.
1668번: 트로피 진열
민식이는 “오민식”이라는 팀이름으로 수없이 많은 로봇대회를 우승했다. 따라서 민식이의 집에는 트로피가 많다. 민식이는 트로피를 어떤 선반 위에 올려놨다. 이 선반은 민식이의 방문을 열
www.acmicpc.net
✅ 풀이
n = int(input())
li = []
lcnt = 0
rcnt = 0
for i in range(n):
t = int(input())
if i == 0:
lcnt += 1
max = t
else:
if t > max:
lcnt += 1
max = t
li.append(t)
for i in range(n-1,-1,-1):
if i == n-1:
rcnt += 1
max = li[i]
else:
if li[i] > max:
rcnt += 1
max = li[i]
print(lcnt)
print(rcnt)
💡 왼쪽에 있는 경우 뒤에 더 큰 트로피가 오는 경우만 카운팅 해주었고,
오른쪽에 있는 경우, 트로피 리스트를 반대로 뒤집어서 같은 방식으로 진행했다.
앞의 트로피와 비교해서 세는 경우 중간에 크기가 작은 트로피가 온 뒤로 카운팅 될 수기 있어,
이를 해결하기 위해 제일 큰 트로피를 기준으로 비교해주었다.