๋ฌธ์
์์ง์ ์์ N๊ฐ์ ์ขํ X1, X2, ..., XN์ด ์๋ค. ์ด ์ขํ์ ์ขํ ์์ถ์ ์ ์ฉํ๋ ค๊ณ ํ๋ค.
Xi๋ฅผ ์ขํ ์์ถํ ๊ฒฐ๊ณผ X'i์ ๊ฐ์ Xi > Xj๋ฅผ ๋ง์กฑํ๋ ์๋ก ๋ค๋ฅธ ์ขํ Xj์ ๊ฐ์์ ๊ฐ์์ผ ํ๋ค.
X1, X2, ..., XN์ ์ขํ ์์ถ์ ์ ์ฉํ ๊ฒฐ๊ณผ X'1, X'2, ..., X'N๋ฅผ ์ถ๋ ฅํด๋ณด์.
์ ๋ ฅ
์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค.
๋์งธ ์ค์๋ ๊ณต๋ฐฑ ํ ์นธ์ผ๋ก ๊ตฌ๋ถ๋ X1, X2, ..., XN์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ X'1, X'2, ..., X'N์ ๊ณต๋ฐฑ ํ ์นธ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํ๋ค.
์ ํ
- 1 ≤ N ≤ 1,000,000
- 10 ≤ X ≤ 10i
- 9
- 9
์์ ์ ๋ ฅ 1
5
2 4 -10 4 -9
์์ ์ถ๋ ฅ 1
2 3 0 3 1
์์ ์ ๋ ฅ 2
6
1000 999 1000 999 1000 999
์์ ์ถ๋ ฅ 2
1 0 1 0 1 0
ํ์ด
๋์ ํ์ด
์๊ฐ ์ด๊ณผ..
import sys
input()
num_list = list(map(int, sys.stdin.readline().split()))
answer = []
new_list = sorted(list(set(num_list)))
for i in num_list:
answer.append(new_list.index(i))
for a in answer:
print(a, end=' ')
๋ฆฌ์คํธ์ ์ค๋ณต์ ์์ ๊ณ , ์ ๋ ฌ์ ํ๋ ๊ณผ์ ์์ O(n)์ด๋ผ๋ ์๊ฐ ๋ณต์ก๋๊ฐ ์ฐ์ด๊ณ , ํด๋น ๋ฆฌ์คํธ์ ์ธ๋ฑ์ค ๊ฐ์ ์ฐพ๊ธฐ์ํด index ํจ์๋ฅผ ์ฌ์ฉํ๋ ๊ณผ์ ์์ O(n)์ด๋ผ๋ ์๊ฐ์ด ์ฐ์ฌ ๊ฒฐ๊ตญ์ O(n*2)์ ์๊ฐ ๋ณต์ก๋๊ฐ ์ฐ์ด๊ฒ ๋๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด dict๋ฅผ ์ฌ์ฉํด๋ณด์๋ค.
์ ๋ต
import sys
input()
num_list = list(map(int, sys.stdin.readline().split()))
answer = []
num_dict = {}
for index, data in enumerate(sorted(list(set(num_list)))):
num_dict[data] = index
for i in num_list:
answer.append(num_dict[i])
for a in answer:
print(a, end=' ')
dict ์ ์ธ๋ฑ์ค ๊ฐ์ ๋ฃ์ด ์๊ฐ์ ์ค์ฌ์ฃผ์๋ค.
๋ค๋ฅธ ์ฌ๋์ ํ์ด
import sys
N = int(input())
inputList = list(map(int,sys.stdin.readline().rstrip().split()))
sortedList = sorted(list(set(inputList)))
dictList = dict(zip(sortedList,list(range(len(sortedList)))))
for x in inputList:
print(dictList[x])