๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Coding Test/Algorithms

[๋ฐฑ์ค€] 18870. ์ขŒํ‘œ ์••์ถ•/Python - Silver2

by The Future Engineer, Lucy 2025. 2. 19.
728x90
๋ฐ˜์‘ํ˜•

โ“๋ฌธ์ œ

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

์„ฑ๋Šฅ ์š”์•ฝ

๋ฉ”๋ชจ๋ฆฌ: 149248 KB, ์‹œ๊ฐ„: 1824 ms

๋ถ„๋ฅ˜

๊ฐ’ / ์ขŒํ‘œ ์••์ถ•, ์ •๋ ฌ

 

๋ฌธ์ œ ์„ค๋ช…

์ˆ˜์ง์„  ์œ„์— N๊ฐœ์˜ ์ขŒํ‘œ X1, X2, ..., XN์ด ์žˆ๋‹ค. ์ด ์ขŒํ‘œ์— ์ขŒํ‘œ ์••์ถ•์„ ์ ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค.

Xi๋ฅผ ์ขŒํ‘œ ์••์ถ•ํ•œ ๊ฒฐ๊ณผ X'i์˜ ๊ฐ’์€ Xi > Xj๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ขŒํ‘œ Xj์˜ ๊ฐœ์ˆ˜์™€ ๊ฐ™์•„์•ผ ํ•œ๋‹ค.

X1, X2, ..., XN์— ์ขŒํ‘œ ์••์ถ•์„ ์ ์šฉํ•œ ๊ฒฐ๊ณผ X'1, X'2, ..., X'N๋ฅผ ์ถœ๋ ฅํ•ด๋ณด์ž.

โœ๐Ÿปํ’€์ด

๋ฌธ์ œ๋ฅผ ์ฝ์–ด๋ณด๋ฉด Xi > Xj๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ขŒํ‘œ Xj์˜ ๊ฐœ์ˆ˜๊ฐ€ Xi'๊ณผ ๊ฐ™๋‹ค๊ณ  ํ•œ๋‹ค. ์ •๋ง ๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ์ด์ค‘๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฝ์šฐ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์ตœ์•…์˜ ๊ฒฝ์šฐ O(N²)์œผ๋กœ N์ด ์ตœ๋Œ€ 1,000,000์ธ ์ด ๋ฌธ์ œ์—์„œ๋Š” ๋‹น์—ฐํžˆ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์ขŒํ‘œ 2, 4, -10, 4 ,-9 ๋กœ ์ด ๋‹ค์„ฏ๊ฐœ ๊ฐ€ ์ฃผ์–ด์กŒ๋‹ค. ์ฃผ์–ด์ง„ ์ขŒํ‘œ๋ฅผ ๋ณด๋ฉด X๋Š” ์ค‘๋ณต๋œ ๊ฐ’์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ์šฐ๋ฆฌ๋Š” set์œผ๋กœ ์ค‘๋ณต๋œ ๊ฐ’์„ ์ œ๊ฑฐํ•˜๊ณ  ๋‹ค์‹œ list๋กœ ๋ฐ”๊ฟ” ์ •๋ ฌํ•œ๋‹ค.

๊ทธ๋Ÿผ ์ •๋ ฌ๋œ list๋Š” -10, -9, 2, 4๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. -10๋ณด๋‹ค ์ž‘์€ ์ขŒํ‘œ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด 0์ด๊ณ , -9๋Š” 1, 2๋Š” 2, 4๋Š” 3์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰, ๊ฐ ์ธ๋ฑ์Šค๊ฐ€ Xi > X๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ์ขŒํ‘œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋จ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด ๋•Œ, for๋ฌธ์„ ์จ์„œ ์ž‘์„ฑํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋” ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์ „ํ˜•ํƒœ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

for i in range(len(S)):        โžก๏ธ         dict(zip(S, range(len(S)))
	res[s[i]] = i

๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ธฐ์กด์— ์ฃผ์–ด์ง„ ์ขŒํ‘œ ์ˆœ์„œ๋Œ€๋กœ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค.

๐Ÿ’ป์ฝ”๋“œ

import sys

input = sys.stdin.readline

N = int(input())
X = list(map(int, input().split()))
S = sorted(list(set(X)))

res = dict(zip(S, range(len(S))))

for x in X:
    print(res[x], end=' ')

๐Ÿ“ํ›„๊ธฐ

N์ด 1,000,000์ธ ๊ฒƒ์„ ๋ณด๊ณ  ์–ด๋–ป๊ฒŒ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ์ค„์—ฌ์•ผ ํ•˜๋‚˜ ๊ณ„์† ๊ณ ๋ฏผํ–ˆ๋‹ค. ๊ฐœ์ˆ˜๋ฅผ ๊ธฐ๋กํ•  ์ƒ๊ฐ์€ ํ–ˆ์ง€๋งŒ dict๋Š” ์ƒ๊ฐํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ์•ž์œผ๋กœ๋Š” list๋กœ๋งŒ ๊ธฐ๋กํ•˜๊ธฐ ์–ด๋ ค์šธ ๊ฒƒ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” dict๋„ ๊ณ ๋ คํ•ด์•ผ๊ฒ ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•