Algorithm/PROGRAMMERS

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค "์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜" [์•Œ๊ณ ๋ฆฌ์ฆ˜/ํ•ด์‰ฌ/์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต/ํŒŒ์ด์ฌ(python)]

DAHLIA CHOI 2021. 7. 12. 01:36

https://programmers.co.kr/learn/courses/30/parts/12077

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

[ ๋ฌธ์ œ ]

์ˆ˜๋งŽ์€ ๋งˆ๋ผํ†ค ์„ ์ˆ˜๋“ค์ด ๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๋‹จ ํ•œ ๋ช…์˜ ์„ ์ˆ˜๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ชจ๋“  ์„ ์ˆ˜๊ฐ€ ๋งˆ๋ผํ†ค์„ ์™„์ฃผํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋งˆ๋ผํ†ค์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด participant์™€ ์™„์ฃผํ•œ ์„ ์ˆ˜๋“ค์˜ ์ด๋ฆ„์ด ๋‹ด๊ธด ๋ฐฐ์—ด completion์ด ์ฃผ์–ด์งˆ ๋•Œ, ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜์˜ ์ด๋ฆ„์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

[ ์ œํ•œ์‚ฌํ•ญ ]

  • ๋งˆ๋ผํ†ค ๊ฒฝ๊ธฐ์— ์ฐธ์—ฌํ•œ ์„ ์ˆ˜์˜ ์ˆ˜๋Š” 1๋ช… ์ด์ƒ 100,000๋ช… ์ดํ•˜์ž…๋‹ˆ๋‹ค.
  • completion์˜ ๊ธธ์ด๋Š” participant์˜ ๊ธธ์ด๋ณด๋‹ค 1 ์ž‘์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ฐ€์ž์˜ ์ด๋ฆ„์€ 1๊ฐœ ์ด์ƒ 20๊ฐœ ์ดํ•˜์˜ ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฐธ๊ฐ€์ž ์ค‘์—๋Š” ๋™๋ช…์ด์ธ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๋ช… ] 

participant์™€ completion์„ ์•ŒํŒŒ๋ฒณ ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

for๋ฌธ์„ ์ด์šฉํ•ด์„œ ์ฒ˜์Œ๋ถ€ํ„ฐ ํ™•์ธ์„ ํ•˜๋Š”๋ฐ, ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๋‹ค๋ฅธ ๊ฒƒ์„ ์ฐพ์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜, ์ค‘๊ฐ„์— ๋‹ค๋ฅธ ์ด๋ฆ„์„ ์ฐพ๋Š”๋‹ค๋ฉด ๊ทธ ์ด๋ฆ„์„ ๋ฆฌํ„ดํ•œ๋‹ค.

 

ํ•ด์‹œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ์ธ๋ฐ, ๋ฆฌ์ŠคํŠธ๋งŒ์œผ๋กœ ํ’€ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์„œ ๋ฆฌ์ŠคํŠธ๋งŒ์„ ์ด์šฉํ•œ ๊ฒƒ, ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•์„ ํ’€์–ด๋ณด์•˜๋‹ค. ์ƒ๊ฐํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋˜‘๊ฐ™์•„์„œ ๊ทธ๋Ÿฐ์ง€ ์ฝ”๋“œ๋Š” ๋˜‘๊ฐ™๋‹ค.

๋”•์…”๋„ˆ๋ฆฌ๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ํ•ด์‹œํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํ•ด์‹œ๋ฅผ ์ด์šฉํ•ด์„œ ํ‘ผ ๊ฒƒ์ด๋‹ค.

 

#๊ทธ๋ƒฅ ๋ฆฌ์ŠคํŠธ๋กœ ํ’€์ด
def solution(participant, completion):
    participant.sort()
    completion.sort()
    
    for i in range(len(participant)):
        if i == len(participant)-1 or participant[i] != completion[i]:
            return participant[i]

 

#๋”•์…”๋„ˆ๋ฆฌ(ํ•ด์‰ฌ) ์‚ฌ์šฉํ•ด์„œ ํ’€์ด
def solution(participant, completion):
    participant.sort()
    completion.sort()
    last = len(participant) -1
    p = dict()
    c = dict()
    for i in range(last):
        p[i] = participant[i]
        c[i] = completion[i]
    p[last] = participant[-1]

    for i in range(last+1):
        if i == last or p[i] != c[i]:
            return p[i]