๐Ÿง‘๐Ÿป‍๐Ÿ’ป Coding Test/๐Ÿ–Œ๏ธ BAEKJOON

[ BAEKJOON ] ์ขŒํ‘œ ์••์ถ• / 19970 / Python

EarthSea 2024. 7. 23. 17:40

 

 

๋ฐฑ์ค€ ๋ฌธ์ œ ๋งํฌ

ํ’€์ด Github ๋งํฌ

 

๋ฌธ์ œ

์ˆ˜์ง์„  ์œ„์— 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])