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 집합에 추가합니다.
- 결과 반환
모든 요소가 저장된 answer 집합의 길이를 반환합니다.
'프로그래머스' 카테고리의 다른 글
2024 KAKAO WINTER INTERNSHIP 주사위 고르기 (0) | 2024.11.07 |
---|---|
수식 복원하기 (0) | 2024.11.04 |
다단계 칫솔 판매 (0) | 2024.10.30 |