[ ๋ฌธ์ ๋งํฌ ]
https://school.programmers.co.kr/learn/courses/30/lessons/178871
๐ฉ ์กฐ๊ฑด
- ํด์ค์ง๋ค์ ์ ์๋ค์ด ์๊ธฐ ๋ฐ๋ก ์์ ์ ์๋ฅผ ์ถ์ํ ๋ ์ถ์ํ ์ ์์ ์ด๋ฆ์ ๋ถ๋ฆ
- ์ ์๋ค์ ์ด๋ฆ์ด 1๋ฑ๋ถํฐ ํ์ฌ ๋ฑ์๋ถํฐ ์์๋๋ก ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด players์ ํด์ค์ง์ด ๋ถ๋ฅธ ์ด๋ฆ์ ๋ด์ ๋ฌธ์์ด ๋ฐฐ์ด callings๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋ฉด, ๊ฒฝ๊ธฐ๊ฐ ๋๋ฌ์ ๋ ๋ฑ์ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ returnํด๋ผ
๐ฉ ์ ๊ทผ
๊ทธ๋ฅ ๋จ์ํ swap ํํ๋ก ๊ตฌํํ๋ฉด..?
๐ฉ ์ํ์ฐฉ์ค
def solution(players, callings):
#answer = []
for name in callings:
found = players.index(name)
players[found], players[found-1] = players[found-1], players[found]
return players
์์ ๊ฐ์ด callings ๋ฐฐ์ด์ ๋๋ฉฐ ์์๋ฅผ ์ฐพ๊ณ ๋ฐ๊พธ๋ ๊ณผ์ ์ ๋ช๋ช ํ ์คํธ ์ผ์ด์ค์์ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค. list์์ item์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ์ ๋ฐํํ๋ index(item) ๋ฉ์๋์ ์๊ฐ๋ณต์ก๋๋ O(n)์ด๊ณ , players ๊ธธ์ด๋ ์ต๋ 50,000, callings ๊ธธ์ด๋ ์ต๋ 1,000,000์ด๋ฏ๋ก ๋ฐ๋ณต ํ์ ๋ํ ๋ง์ผ๋ฏ๋ก ์๊ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ ๊ฒ์ด๋ค. (์๋ง ์๊ฐ ์ด๊ณผ๊ฐ ๋ ํ ์ผ๋ ๊ทธ๋ฐ ๊ฒฝ์ฐ๊ฒ ์ง?)
๋ฐ๋ผ์ ๋งค ๋ฐ๋ณต๋ง๋ค O(n)์ ์ฐ์ฐ์ ํ์ง ์๊ณ , ๋ ํจ์จ์ ์ผ๋ก ์ ์๋ค์ ์์, ์ฆ index๋ฅผ ์ฐพ์ ์ ์๋ ๋ฐฉ๋ฒ์ ์๊ฐํด์ผ ํ๋ค. ๊ทธ ์ค ํ๋๊ฐ ํด์ ๋งต์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
ํด์ ๋งต์ด๋ ํค(Key)์ ๊ฐ(value)์์ ์ ์ฅํ๋ ์๋ฃ ๊ตฌ์กฐ์ด๋ค. insert, erase, find, update ์ฐ์ฐ์ด ๋ชจ๋ O(1)์ ์ฒ๋ฆฌ ๊ฐ๋ฅํ๋ค.
ํ์ด์ฌ์์ ํด์๋ ๋์ ๋๋ฆฌ๋ฅผ ํตํด ๊ตฌํํ ์ ์๋ค!
ํค๊ฐ ์ ์, ๊ฐ์ด (๋ฑ์-1)์ธ ๋์ ๋๋ฆฌ result๋ฅผ ๋ง๋ค๊ณ , callings ๋ฐฐ์ด์ ๋๋ฉฐ ์ด๋ฆ์ด ๋ฑ์ฅํ ๋๋ง๋ค ๊ทธ ์ด๋ฆ์ result ๋ฐฐ์ด์์ ์ฐพ์ ํ์ฌ ๋ฑ์๋ฅผ ์์๋ด๊ณ , ์์ ํ ํ ์ ๋ฐ์ดํธํ์ฌ ๋ค์ ์ ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ ์์๊ฒ ์ถ์๋นํ ์ ์๋ฅผ ์์๋ด๋ ๋ฐฉ๋ฒ์ players ๋ฐฐ์ด์ ์ฐธ๊ณ ํ๋ฉด ๋๋ค! (์ด ์ฌ๊ณ ๊ฐ ๋๋ฆ ์ ๋ฐํ๊ฒ ๋๊ปด์ก๋ค..)
๐ป ์ฝ๋ (Python3)
def solution(players, callings):
result = {player:i for i,player in enumerate(players)}
for name in callings:
idx=result[name]
result[name]-=1
result[players[idx-1]]+=1
players[idx], players[idx-1] = players[idx-1], players[idx]
return players
'๐ป Algorithms > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ต๋๊ฐ๊ณผ ์ต์๊ฐ - ๋ฌธ์์ด ์ฒ๋ฆฌ? (1) | 2024.09.20 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ง๋ฒ์ ์๋ฆฌ๋ฒ ์ดํฐ - ์ํ (0) | 2024.08.23 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ค์ ์๋ ํฐ ์ ์ฐพ๊ธฐ - ์คํ (0) | 2024.08.20 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ ์ ์ฌ์ด์ ์ ์ ์ - ์ํ (0) | 2024.08.17 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ฐ์๋ ๋ถ๋ถ ์์ด์ ํฉ - ํฌ ํฌ์ธํฐ (0) | 2024.08.14 |