728x90
문제)
길이가 N인 수열 A1 A2 ⋯ AN이 주어진다. 1≤i≤N인 정수 i마다 i<j≤N이고 Ai≠Aj인 정수 j중 최솟값을 출력하라.
만약 이러한 j가 없다면 −1을 출력하라.
입력)
첫째 줄에 수열 A의 크기 N이 주어진다. 둘째 줄에는 A1 A2 ⋯ AN이 공백으로 구분되어 주어진다.
(1 ≤ N ≤ 106, −109 ≤ Ai ≤109) 입력으로 주어지는 모든 수는 정수이다.
출력)
각 i마다 조건을 만족하는 최솟값 j를 출력하라. 만약 이러한 j가 없다면 −1을 출력하라.
T = int(input())
num = list(map(int, input().split()))
num_count = 1; num_idx = []
for i in range(1, T):
if num[i-1] != num[i]:
num_idx.append([i+1, num_count])
num_count = 1
else:
num_count += 1
num_idx.append([-1, num_count])
for item in num_idx:
print((str(item[0])+' ')*item[1], end='')
풀이 : 바로 앞 숫자와 현재 숫자가 같으면 num_count 에 1을 더해주고 다르면 현재 위치와 num_count를 num_idx에 추가해준다. 그러면 현재 위치와 바로 앞 숫자의 반복 횟수가 저장된 리스트가 만들어지게 된다. 마지막은 항상 -1이 들어가므로 -1과 앞숫자의 반복횟수를 마지막으로 추가해준 뒤 입력된 값들의 정보를 출력해주면 된다.
'코딩 공부 > 파이썬' 카테고리의 다른 글
백준) 3036 - 링 [파이썬3] (0) | 2022.07.13 |
---|---|
백준) 10814 - 나이순 정렬 [파이썬3] (0) | 2022.07.12 |
백준) 25239 - 가희와 카오스 파풀라투스 [파이썬 3] (0) | 2022.07.07 |
백준) 9375 - 패션왕 신해빈 [파이썬3] (0) | 2022.07.05 |
백준) 25306 - 연속 XOR [파이썬 3] (0) | 2022.07.03 |