N개의 숫자가 주어졌을 때, 주어진 숫자들 중 최댓값의 위치를 출력합니다. 만약 최댓값이 여러 개라면, 가장 왼쪽에 있는 최댓값의 위치를 출력합니다.
그 이후에는 위에서 구한 최댓값의 위치보다 더 왼쪽에 있는 숫자들 중 최댓값을 구해 그 위치를 출력합니다. 이 경우에도 최댓값이 여러 개라면, 가장 왼쪽에 있는 최댓값의 위치를 출력합니다.
위의 과정을 끊임없이 반복하며, 최종적으로 첫 번째 원소가 뽑히게 되면 이 과정을 종료합니다. 이러한 과정을 거쳐 구해진 최댓값의 위치들을 출력하는 프로그램을 작성해보세요.
# 변수 선언 및 입력
n = int(input())
a = list(map(int, input().split()))
prev_max_idx = n
# 첫 번째 원소가 최대가 되기 전까지 계속 반복합니다.
while True:
# 최대값 후보의 시작은 항상 첫 번째 원소입니다.
max_idx = 0
# 두 번째 원소부터 바로 직전 최대로 뽑힌
# 원소 전까지 보면서 그 중 최대 index를 갱신합니다.
# index를 오름차순으로 보기 때문에
# 최댓값이 여러개인 경우 가장 왼쪽에 있는
# 원소가 뽑히게 됩니다.
for i in range(1, prev_max_idx):
if a[i] > a[max_idx]:
max_idx = i
print(max_idx + 1, end=" ")
# 최대인 원소가 첫 번째 원소라면 종료합니다.
if max_idx == 0:
break
#바로 직전 최대 index를 갱신해줍니다.
prev_max_idx = max_idx
# 나의 풀이 -------------------------------------
n = int(input())
arr = list(map(int, input().split()))
max_val = max(arr) # 최댓값
max_idx = arr.index(max_val) # 최댓값의 첫 번째 위치
print(max_idx + 1, end=' ')
while max_idx > 0:
arr = arr[:max_idx] # 최댓값 이전의 숫자들만 남김
max_val = max(arr) # 최댓값 업데이트
max_idx = arr.index(max_val) # 최댓값의 첫 번째 위치
print(max_idx + 1, end=' ')
'Python > [코드트리]' 카테고리의 다른 글
공백있는 문자열 한번에 입력받기 > 공백을 기준으로 출력 (0) | 2023.07.03 |
---|---|
[코드트리] 공백있는 문자열 한번에 입력받기 > 문자 개수 세기 (0) | 2023.07.03 |
[코드트리] Min/Max > 두 숫자의 차의 최솟값 (0) | 2023.07.02 |
[코드트리] Min/Max > 자동차 단일 거래 이익 최대화하기(★) (0) | 2023.07.02 |
[코드트리] Min/Max > 500 근처의 수 (0) | 2023.07.02 |