[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‹ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ - ํ•ด์‹œ

2024. 9. 20. 01:22ยท๐Ÿ’ป Algorithms/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ ๋ฌธ์ œ๋งํฌ ]

https://school.programmers.co.kr/learn/courses/30/lessons/178871

 

๐Ÿšฉ ์กฐ๊ฑด

  1. ํ•ด์„ค์ง„๋“ค์€ ์„ ์ˆ˜๋“ค์ด ์ž๊ธฐ ๋ฐ”๋กœ ์•ž์˜ ์„ ์ˆ˜๋ฅผ ์ถ”์›”ํ•  ๋•Œ ์ถ”์›”ํ•œ ์„ ์ˆ˜์˜ ์ด๋ฆ„์„ ๋ถ€๋ฆ„
  2. ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด 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
'๐Ÿ’ป Algorithms/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’ - ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ?
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋งˆ๋ฒ•์˜ ์—˜๋ฆฌ๋ฒ ์ดํ„ฐ - ์ˆ˜ํ•™
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋’ค์— ์žˆ๋Š” ํฐ ์ˆ˜ ์ฐพ๊ธฐ - ์Šคํƒ
  • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‘ ์› ์‚ฌ์ด์˜ ์ •์ˆ˜ ์Œ - ์ˆ˜ํ•™
์ ๋„
์ ๋„
  • ์ ๋„
    ๋„์ 
    ์ ๋„
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (30)
      • ๐Ÿ’ป Algorithms (28)
        • ๋ฐฑ์ค€ (22)
        • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
      • ๐Ÿ”Ž Deep Learning (0)
      • ๐Ÿ’ฅ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… (1)
      • ๐Ÿ•น Unity (1)
      • ๐Ÿฅ” ์ž‰ํ…… (0)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

    • Blog
    • Github
    • Velog
  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.0
์ ๋„
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ๋‹ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ - ํ•ด์‹œ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”