티스토리 뷰

PS/BOJ Python

1015번 - 수열 정렬

zpqmdh 2023. 3. 30. 22:33

https://www.acmicpc.net/problem/1015

 

1015번: 수열 정렬

P[0], P[1], ...., P[N-1]은 0부터 N-1까지(포함)의 수를 한 번씩 포함하고 있는 수열이다. 수열 P를 길이가 N인 배열 A에 적용하면 길이가 N인 배열 B가 된다. 적용하는 방법은 B[P[i]] = A[i]이다. 배열 A가 주

www.acmicpc.net

하.. 문제를 이해하는게 어려웠다... (글을 많이 읽자...)

그래서 B가 오름차순이라는건지~ 내림차순이라는건지~ 헷갈렸다 ㅎㅎ...

결론부터 말하자면!! A를 정렬하는 문제이다!

인덱스와 값에 모두 접근하기 위해 딕셔너리를 사용했는데 굳이? 사용해야 하나 싶긴 하다.

A가 중복이 가능하기 때문에 방문처리도 해줘야 한다.

따라서 visited 배열을 선언하였다.

cnt 변수를 두어 A가 몇번째로 작은지 P에 저장하였다!

# 수열 정렬
import sys
input = sys.stdin.readline

# B[P[i]] = A[i]
# B: A를 오름차순으로 정렬한 것
# P: A가 몇번째로 작은지를 나타내는 것

N = int(input())
A = list(map(int, input().split()))
B = sorted(A)
P = [0 for _ in range(N)]
visited = [False for _ in range(N)]

dic = {}
for i in range(N):
    dic[i] = A[i]

cnt = 0
for i in range(N):
    x = B[i]
    for j in dic.items(): # j = (idx, value)
        if j[1] == x and visited[j[0]] == False:
            P[j[0]] = cnt
            cnt += 1
            visited[j[0]] = True

print(*P)

 

 

 

'PS > BOJ Python' 카테고리의 다른 글

2839번 - 설탕 배달  (0) 2023.04.01
1358번 - 하키  (0) 2023.03.31
10815번 - 숫자 카드  (0) 2023.03.29
17478번 - 재귀함수가 뭔가요?  (0) 2023.03.28
1182번 - 부분수열의 합  (0) 2023.03.25
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함