>> 문제 바로가기 (https://www.acmicpc.net/problem/24523)
풀이 과정
i번째 수 의 뒤에 나오는 i+1 번째 수가 i번째 수와 같은 수가 아니라면 무조건 i+1이 최솟값 j이다.
같은 수가 연속으로 여러 번 나오다가 다른 수가 나온다면, 다르게 나온 수 앞에 있는 모든 수들의 j 는 해당 다르게 나온 수의 인덱스가 된다.
같은 수가 연속으로 나오는 횟수를 카운팅했다가, 다른 수가 나왔을 때 카운트한만큼 현재 인덱스를 출력하고, 수열의 끝까지 찾았는데도 만족하는 j 가 없는 수들은 -1 을 출력하도록 구현한다.
import sys
input = sys.stdin.readline
n = int(input().rstrip())
arr = list(map(int, input().rstrip().split()))
cnt = 0
for i in range(n):
if i == 0: cnt += 1
elif arr[i] == arr[i-1]: cnt += 1
else:
for _ in range(cnt):
print(i+1, end=' ')
cnt = 1
for _ in range(cnt):
print(-1, end=' ')
'-- 예전 기록 > BOJ' 카테고리의 다른 글
[ BOJ ] 16926 : 배열 돌리기 1 ( SILVER 1 ) / Python (0) | 2024.02.15 |
---|---|
[ BOJ ] 1946 : 신입 사원 ( SILVER 1 ) / Python (0) | 2024.02.15 |
[ BOJ ] 16507 : 어두운 건 무서워 ( SILVER 1 ) / Python (1) | 2024.02.15 |
[ BOJ ] 11051 : 이항 계수 2 ( SILVER 2 ) / Python (0) | 2024.02.15 |
[ BOJ ] 18429 : 근손실 ( SILVER 3 ) / Python (0) | 2024.02.15 |