def solution(a):
left_min = float('inf')
right_min = float('inf')
answer =set()
for left,right in zip(a,reversed(a)):
if left < left_min:
left_min = left
answer.add(left_min)
if right < right_min:
right_min = right
answer.add(right_min)
return len(answer)
코드 설명
초기화 left_min과 right_min은 각각 양쪽 끝에서 현재까지 탐색한 최소값을 저장합니다. answer는 set 자료형으로 중복된 요소를 방지합니다.
반복문 zip(a, reversed(a))를 사용하여 a 배열의 양쪽 끝에서 시작하는 두 개의 포인터(left와 right)를 동시에 탐색합니다.
조건문
left 요소가 현재 left_min보다 작을 경우, left_min을 갱신하고 answer 집합에 추가합니다.
right 요소가 현재 right_min보다 작을 경우, right_min을 갱신하고 answer 집합에 추가합니다.