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)):