https://school.programmers.co.kr/learn/courses/30/lessons/178871
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ฑ๋ฌธ์ ์ค๋ช
์์์๋ ๋งค๋
๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ๊ฐ ์ด๋ฆฝ๋๋ค. ํด์ค์ง๋ค์ ์ ์๋ค์ด ์๊ธฐ ๋ฐ๋ก ์์ ์ ์๋ฅผ ์ถ์ํ ๋ ์ถ์ํ ์ ์์ ์ด๋ฆ์ ๋ถ๋ฆ
๋๋ค. ์๋ฅผ ๋ค์ด 1๋ฑ๋ถํฐ 3๋ฑ๊น์ง "mumu", "soe", "poe" ์ ์๋ค์ด ์์๋๋ก ๋ฌ๋ฆฌ๊ณ ์์ ๋, ํด์ค์ง์ด "soe"์ ์๋ฅผ ๋ถ๋ ๋ค๋ฉด 2๋ฑ์ธ "soe" ์ ์๊ฐ 1๋ฑ์ธ "mumu" ์ ์๋ฅผ ์ถ์ํ๋ค๋ ๊ฒ์
๋๋ค. ์ฆ "soe" ์ ์๊ฐ 1๋ฑ, "mumu" ์ ์๊ฐ 2๋ฑ์ผ๋ก ๋ฐ๋๋๋ค.
์ ์๋ค์ ์ด๋ฆ์ด 1๋ฑ๋ถํฐ ํ์ฌ ๋ฑ์ ์์๋๋ก ๋ด๊ธด ๋ฌธ์์ด ๋ฐฐ์ด players์ ํด์ค์ง์ด ๋ถ๋ฅธ ์ด๋ฆ์ ๋ด์ ๋ฌธ์์ด ๋ฐฐ์ด callings๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฒฝ์ฃผ๊ฐ ๋๋ฌ์ ๋ ์ ์๋ค์ ์ด๋ฆ์ 1๋ฑ๋ถํฐ ๋ฑ์ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋ solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐ฑ์ ํ์ฌํญ
5 ≤ players์ ๊ธธ์ด ≤ 50,000
players[i]๋ i๋ฒ์งธ ์ ์์ ์ด๋ฆ์ ์๋ฏธํฉ๋๋ค.
players์ ์์๋ค์ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
players์๋ ์ค๋ณต๋ ๊ฐ์ด ๋ค์ด๊ฐ ์์ง ์์ต๋๋ค.
3 ≤ players[i]์ ๊ธธ์ด ≤ 10
2 ≤ callings์ ๊ธธ์ด ≤ 1,000,000
callings๋ players์ ์์๋ค๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
๊ฒฝ์ฃผ ์งํ์ค 1๋ฑ์ธ ์ ์์ ์ด๋ฆ์ ๋ถ๋ฆฌ์ง ์์ต๋๋ค.
๐ฑ์
์ถ๋ ฅ ์
players / callings / result
["mumu", "soe", "poe", "kai", "mine"] ["kai", "kai", "mine", "mine"] ["mumu", "kai", "mine", "soe", "poe"]
๐ฑ์ ์ถ๋ ฅ ์ ์ค๋ช
4๋ฑ์ธ "kai" ์ ์๊ฐ 2๋ฒ ์ถ์ํ์ฌ 2๋ฑ์ด ๋๊ณ ์์ 3๋ฑ, 2๋ฑ์ธ "poe", "soe" ์ ์๋ 4๋ฑ, 3๋ฑ์ด ๋ฉ๋๋ค. 5๋ฑ์ธ "mine" ์ ์๊ฐ 2๋ฒ ์ถ์ํ์ฌ 4๋ฑ, 3๋ฑ์ธ "poe", "soe" ์ ์๊ฐ 5๋ฑ, 4๋ฑ์ด ๋๊ณ ๊ฒฝ์ฃผ๊ฐ ๋๋ฉ๋๋ค. 1๋ฑ๋ถํฐ ๋ฐฐ์ด์ ๋ด์ผ๋ฉด ["mumu", "kai", "mine", "soe", "poe"]์ด ๋ฉ๋๋ค.
๐ฑ์ ๋ต ์ฝ๋
def solution(players, callings):
pla_dic = {key: i for i, key in enumerate(players)}
for p in callings:
c = pla_dic[p]
pla_dic[p] -= 1
pla_dic[players[c-1]] += 1
players[c-1], players[c] = players[c], players[c-1]
return players
๐ฑ์ ๋ต ์ถ๋ ฅ ์ฝ๋ (์ถ๋ ฅ๊ฐ ํ์ธ ์ฉ๋)
def solution(players, callings):
pla_dic = {key: i for i, key in enumerate(players)}
print(pla_dic)
for p in callings:
c = pla_dic[p] # ์ธ๋ฑ์ค ๊ธฐ๋ก -> ์์๊ฑฐ ์ฐพ์๋ ์ด๋ค
pla_dic[p] -= 1 #๊ฐ์๋ณ๊ฒฝ - ๋์
๋๋ฆฌ
pla_dic[players[c-1]] += 1 # ๊ฐ์๋ณ๊ฒฝ - ๋์
๋๋ฆฌ
players[c-1], players[c] = players[c], players[c-1] # ๋ฐฐ์ด๊ฐ ๊ฐฑ์
return players
players = list(input().split())
callings = list(input().split())
answer = solution(players, callings)
print(answer)
๐ฑํด์ค
pla_dic์ด๋ players์ ๋์ ๋๋ฆฌ๋ฅผ enumerate๋ฅผ ํตํด์ ์์ฑํ์ฌ
๊ฐ players๋ง๋ค ํ์ฌ ์์๋ฅผ value๊ฐ์ผ๋ก ๊ฐ์ง๊ณ ์๊ฒ ํ๋ค
pla_dic = {key: i for i, key in enumerate(players)}
c๊ฐ์ด๋ ํ์ฌ ๋์ ๋๋ฆฌ์ ๊ฐ, ์ฆ ์ ์๋ค์ ์์์ธ ๋์์
players์์์ ํ์ฌ ์ ์์ ์ธ๋ฑ์ค ๊ฐ์ ๋ํ๋ธ๋ค
players์ pla_dic ๋ ๊ฐ์ ๋ฐฐ์ด๊ณผ ์ฐ๊ด์ด ์๋ ๊ฐ์ด๋ค
โ๏ธ์ผ๋จ c์ ๊ฐ์ ํ์ฌ p๋ก ํธ๋ช ๋ ์ ์์ players์ธ๋ฑ์ค ๊ฐ์ธ ๋์์ pla_dic์์์ ์์๊ฐ์ด๋ค
c = pla_dic[p] # ์ธ๋ฑ์ค ๊ธฐ๋ก -> ์์๊ฑฐ ์ฐพ์๋ ์ด๋ค
callings์์ c๋ก ํ ๋ช ์ฉ ํธ๋ช ์ ํ์๋
โ๏ธplayers์์ ์์๋ฅผ ๋ฐ๊ฟ์ผ ํ๊ณ pla_dic์์ ์์๊ฐ์ ๋ณ๊ฒฝํด์ผ ํ๋ค. 2๊ฐ์ ๋ฐฐ์ด์ ๊ฐฑ์ ํด์ผ ํ๋ค
pla_dic์์์ ๊ฐ์ ์ค์ด๋ฉด ์์๊ฐ ์ฌ๋ผ๊ฐ๋ค (๊ฐ์ด๋)
์๊น ๊ธฐ๋กํด๋์ c๊ฐ์ผ๋ก ์์ ์๋ ์ ์๋ฅผ players[c-1]๋ก ์ฐพ์ ํ ๊ฐ์ ์ฌ๋ฆฐ๋ค (๋ ํ์์)
โ๏ธ๋์ ๋๋ฆฌ ๊ฐฑ์
pla_dic[p] -= 1 #๊ฐ์๋ณ๊ฒฝ - ๋์
๋๋ฆฌ
pla_dic[players[c-1]] += 1 # ๊ฐ์๋ณ๊ฒฝ - ๋์
๋๋ฆฌ
โ๏ธplayers ํ์ฌ ์ ์๋ค์ ์ํ ๋ฐฐ์ด ๊ฐฑ์ , ๊ฐ ์ฝ๊ฒ ๋ฐ๊พธ๊ธฐ
players[c-1], players[c] = players[c], players[c-1] # ๋ฐฐ์ด๊ฐ ๊ฐฑ์
๐ฑ์์์ผ ํ๋ ์ง์
ํ์ด์ฌ ๋์ ๋๋ฆฌ
https://jaewonna.tistory.com/230
ํ์ด์ฌ enumerate
https://jaewonna.tistory.com/231
ํ์ด์ฌ ๋ณ์ ๊ฐ ๋ฐ๊พธ๊ธฐ
a, b = b, a
https://annajang.tistory.com/41
๐ฑ๋ฌธ์ ์ ํน์ง
๋ฐฑ์ค ๋ฌธ์ ์ ๋ค๋ฅด๊ฒ ์ฅํฉํ ๋ฌธ์์ด ๋ฐฐ์ด์ด ๋ฌธ์ ๋ก ๋์ค๋ฉด ์ฝ๊ฒ ๋นํฉํ๋ ๊ฒฝํฅ์ด ์๋ค
๋ฌธ์์ด ๋ฌธ์ ๊ฐ ๋์์ ๋ ๋นํฉํ์ง ์๊ณ ํ์์ ๋์ ๋๋ฆฌ ๋ฌธ๋ฒ ๋ฐ ๋ฌธ์์ด ๋ฌธ๋ฒ์ ์์งํ๊ณ ๊ด๋ จ ๋ฌธ์ ๋ฅผ ๋ง์ด ํ์ด๋ด์ผ ๊ฒ ๋ค
๋งค์ผ ๋ฌธ์ ํธ๋ ์ต๊ด ๋ค์ด๊ธฐ !!!!!!
'Algorithm๐ค > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] Lv1. ๊ณต์ ์ฐ์ฑ (0) | 2023.06.08 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] Lv1. ์ถ์ต ์ ์ (0) | 2023.06.07 |