문제 출처
풀이
우리에게 주어지는 input은 'N'과 '수열 A'이고, 이 수열 A를 비내림차순(각각의 원소가 바로 앞에 있는 원소보다 크거나 같을 경우)으로 만드는 '수열 P'를 구해야하는 문제이다.
주어진 문제의 설명과 예제만으로는 이해하기 쉽지 않지만, 간단하게 설명하면 수열 A 와 같은 길이의 수열 P를 만들고, 수열 A의 작은 값의 인덱스와 같은 위치의 수열 P에 0부터 N-1까지 넣어주면 된다. 예를들면,
- 예제1
수열 A : 4 2 6 1 9
수열 P : 2 1 3 0 4
- 예제2
수열 A : 1 0 1 0 1
수열 P : 2 0 3 1 4
- 예제3
수열 A : 1 1 1
수열 P : 0 1 2
위의 예제와 같이 만약 수열 A에 중복되는 숫자가 있다면 중복되는 숫자가 나온 순서대로 인덱스를 구하면 된다.
N = int(input())
A = list(map(int, input().split()))
P = [-1] * N # A와 같은 길이의 P 생성
idx = 0
for i in range(N):
min_idx = A.index(min(A)) # 수열 A에서 가장 작은 수의 인덱스를 구한다
A[min_idx] = 1001 # 수열 A에서 가장 작은 수를 가장 큰 수로 치환
P[min_idx] = idx # 위에서 구한 인덱스에 0부터 넣어줌
idx += 1
print(' '.join([str(i) for i in P]))
'백준' 카테고리의 다른 글
[python] 16236. 아기 상어 (0) | 2019.06.29 |
---|---|
[python] 10825. 국영수 (0) | 2019.06.29 |
[python] 1002. 터렛 (0) | 2019.06.26 |
[python] 1010. 다리놓기 (0) | 2019.06.26 |
[python] 1004. 어린 왕자 (0) | 2019.06.25 |