2022-3/1일1코딩

[BOJ] 18870 python

이망고_ 2022. 12. 7. 16:58
import sys
input = sys.stdin.readline

n=int(input())
data = list(map(int, input().split())) # 2 4 -10 4 -9
# 원데이터, 가공데이터 
data2 = sorted(list(set(data))) # 정렬, 중복, 리스트


# print(data2)
# print(len(data2))

dic = {}
for i in range(len(data2)): # -10 -9 2 4 
    dic[data2[i]] = i # 0 1 2 3

for i in data: # 원데이터를 돌면 2 4 -10 4 -9 그 인덱스를 내놔라
    print(dic[i], end=' ')

 

 

 

정렬해서 인덱스를 출력하는 생각까진 오케..

근데 원데이터의 인덱스를 어떻게 출력하지?

 

나누어서 어찌저찌 할 생각은 했는데, 구현하기가 어려웠다.

딕셔너리로 정해준 것은 메모리 오류 막기 위해서였고

 

1. 딕셔너리 설정도 재밌었다

리스트 안에 담고 = 로 밸루 설정

 

2. 저장한 인덱스 값을

원데이터를 for문으로 돌면서 인덱스값 내뱉게 하기

 

for i in range(len(data2)):

     dic[data2[i]] = i 

 

for i in range data:

     print(data[i]], end = '  ' )

 

3. 어떤 범위를 돌게 하는가

 

처음에 in data2 :

 를 하니 오류

 둘째로 in range(len(data2)) 가 맞으면 n 값으로 해도? 하지만, 중복처리 한 데이터라 n 값 달라지니 탈락

 아닌 경우는 써도 되겠다는 생각이 들었다

 하지만,

 아랫줄에서 dic 정의해줄 때 data2 의 오류가 나는 듯 하였다.

 그러니 그 갯수만큼, 그리고 아래에서 사용할 것이면 그 데이터의 길이만큼 범위를 지정하는 것이 좋을 듯 하다. 

 in range(len(data2)):