본문 바로가기

코딩테스트 문제풀이

[python3] 1668번:트로피진열

728x90

트로피 진열 성공

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB 6010 2892 2431 49.320%

문제

민식이는 “오민식”이라는 팀이름으로 수없이 많은 로봇대회를 우승했다. 따라서 민식이의 집에는 트로피가 많다. 민식이는 트로피를 어떤 선반 위에 올려놨다. 이 선반은 민식이의 방문을 열고 들어가자마자 선반의 왼쪽이 보인다. 다른말로 하자면, 뒤의 트로피가 앞의 트로피에 가려져 있다는 말이다.

안타깝게도, 높이가 큰 트로피가 높이가 작은 트로피의 왼쪽에 있다면, 높이가 작은 트로피는 큰 트로피에 가려서 보이지 않게 된다. 트로피는 자기의 앞에 (보는 사람의 관점에서) 자기보다 높이가 작은 트로피가 있을 때만 보이게 된다. 민식이는 선반을 180도 회전시켜서 트로피가 보이는 개수를 변하게 할 수도 있다.

선반위에 올려져 있는 트로피의 높이가 주어졌을 때, 왼쪽에서 봤을 때 보이는 개수와, 오른쪽에서 봤을 때 보이는 개수를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 트로피의 개수 N (1 ≤ N ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 왼쪽의 트로피부터 차례대로 높이가 주어진다. 트로피의 높이는 100보다 작거나 같은 자연수이다.

출력

첫째 줄에 왼쪽에서 봤을 때 보이는 개수, 둘째 줄에 오른쪽에서 봤을 때 보이는 개수를 출력한다.

 

N개의 트로피가 주어졌을 때

 

트로피를 왼쪽에서 봤을 때 보이는갯수와 오른쪽에서 봤을때의 갯수를 구하는문제이다.

 

index[0] 과 index[1]을 비교해보았을 때 1의 트로피길이가 더 크다면 index[0]의 값은 왼쪽에서 봤을 때 트로피가 

보이게된다.그리고 now 변수에 현재 index값을 담아주었다.

이와같은 방법으로 간단하게 구현할 수 있었다.

 

def display(target):

    now=target[0]
    result=1
    for i in range(1,len(target)):
        
        if now<target[i]:
            result+=1
            now=target[i] 
    
    return result



N=int(input())
array=[]
for i in range(N):
    a=int(input())
    array.append(a)

print(display(array))
array.reverse()
print(display(array))

 

728x90

'코딩테스트 문제풀이' 카테고리의 다른 글

[python3] 11508번 2+1 세일  (0) 2022.11.15
[python3] 1904번 01타일  (0) 2022.11.14
[python3] 1302번 베스트셀러  (0) 2022.11.12
[python3] 1568번: 새  (0) 2022.11.11
[python3] 9237번 이장님 초대  (0) 2022.11.10