๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿค– ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

#ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ํŒŒ์ด์ฌ Lv.1 #์ฒด์œก๋ณต

๋ฌธ์ œ์„ค๋ช…
: ์ „์ฒด ํ•™์ƒ์˜ ์ˆ˜ n, ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ•œ ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด lost, ์—ฌ๋ฒŒ์˜ ์ฒด์œก๋ณต์„ ๊ฐ€์ ธ์˜จ ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด reserve๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ฒด์œก์ˆ˜์—…์„ ๋“ค์„ ์ˆ˜ ์žˆ๋Š” ํ•™์ƒ์˜ ์ตœ๋Œ“๊ฐ’์„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑ

๋ฌธ์ œํ’€์ด

  1. set์„ ํ†ตํ•ด reserve ์™€ lost ์˜ ์ฐจ์ง‘ํ•ฉ์„ ๊ตฌํ•œ๋‹ค
  2. reserve ์—์„œ lost์— ๊ฒน์น˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋น„๊ตํ•˜๋Š”๋ฐ
  3. ๋ฐ”๋กœ ์•ž ๋ฒˆํ˜ธ์˜ ํ•™์ƒ์ด๋‚˜ ๋ฐ”๋กœ ๋’ท ๋ฒˆํ˜ธ์˜ ํ•™์ƒ์—๊ฒŒ๋งŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—
  4. ์•ž๋ฒˆํ˜ธ๋‚˜ ๋’ท๋ฒˆํ˜ธ์— ์ฒด์œก๋ณต์„ ์žƒ์–ด๋ฒผ๋ €์œผ๋ฉด ๋นŒ๋ ค์ค€ ํ•™์ƒ์ˆ˜๋ฅผ ์˜ฌ๋ฆฌ๊ณ   ์žƒ์–ด๋ฒ„๋ฆฐ ํ•ญ๋ชฉ์—์„œ ํ•ด๋‹น ํ•™์ƒ์„ ์ง€์›Œ์ค€๋‹ค
  5. ๋ชจ๋“  ํ•™์ƒ์ด ์ฒด์œก๋ณต์„ ๋นŒ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉด ์ „์ฒด ํ•™์ƒ์ˆ˜ n์„ ์ถœ๋ ฅํ•˜๊ณ 
  6. ์•„๋‹ˆ๋ฉด ๋นŒ๋ฆด ์ˆ˜ ์žˆ๋Š” ํ•™์ƒ ์ˆ˜์˜ ์ตœ๋Œ€ ํ•™์ƒ ์ˆ˜๋ฅผ ์ถœ๋ ฅ.
def solution(n, lost, reserve):
    set_reserve = set(reserve) - set(lost)
    set_lost = set(lost) - set(reserve)

    for i in set_reserve :
        if i-1 in set_lost :
            set_lost.remove(i-1)
        elif i+1 in set_lost :
            set_lost.remove(i+1)
    return n - len(set_lost)

 

# ๋‹ค๋ฅธ์‚ฌ๋žŒ ํ’€์ด

  1. ์ฒ˜์Œ _reserve์™€ _lost๋ฐฐ์—ด์„ ๋งŒ๋“ค๋ฉด์„œ ์ค‘๋ณต์„ ์ œ๊ฑฐ
  2. ์ œํ•œ์‚ฌํ•ญ์„ not in ์œผ๋กœ ์ฒ˜๋ฆฌ
  3. ์—ฌ๋ฒŒ์˜ท์„ ๊ฐ€์ง„ ํ•™์ƒ๋“ค์˜ ๋ฐฐ์—ด ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ๋ฝ‘์•„์„œ ์™ผ์ชฝ์ด๋‚˜ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์ธ๋ฑ์Šค๋ฅผ ์ด๋™ํ–ˆ์„ ๋•Œ, ์˜ท์„ 0๊ฐœ ๊ฐ€์ง„ ๋ฐฐ์—ด์— ํ•ด๋‹น ์ธ๋ฑ์Šค๊ฐ€ ์กด์žฌํ•˜๋ฉด ๋นŒ๋ ค์ฃผ๋Š” ์‹์œผ๋กœ for ๋ฌธ์„ ๋Œ๋ฉฐ forward, back ํ›„ remove
  4.  ๊ฒฐ๊ตญ _lost์—๋Š” ์•ž ๋’ค๋กœ ์˜ท์„ ๋นŒ๋ฆฌ์ง€ ๋ชปํ•œ ํ•™์ƒ๋งŒ ๋ฐฐ์—ด์— ๋‚จ๊ฒŒ ๋˜๊ณ  ํ•™์ƒ ์ˆ˜์—์„œ ๊ทธ ๊ธธ์ด๋ฅผ ๋นผ์„œ ๋‹ต์„ ๊ตฌํ•จ
def solution(n, lost, reserve):
    _reserve = [r for r in reserve if r not in lost]
    _lost = [l for l in lost if l not in reserve]
    for r in _reserve:
        f = r - 1
        b = r + 1
        if f in _lost:
            _lost.remove(f)
        elif b in _lost:
            _lost.remove(b)
    return n - len(_lost)

 

 

 

 

https://programmers.co.kr/learn/courses/30/lessons/42862

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์ฒด์œก๋ณต

์ ์‹ฌ์‹œ๊ฐ„์— ๋„๋‘‘์ด ๋“ค์–ด, ์ผ๋ถ€ ํ•™์ƒ์ด ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰ํžˆ ์—ฌ๋ฒŒ ์ฒด์œก๋ณต์ด ์žˆ๋Š” ํ•™์ƒ์ด ์ด๋“ค์—๊ฒŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ฃผ๋ ค ํ•ฉ๋‹ˆ๋‹ค. ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ๋Š” ์ฒด๊ฒฉ ์ˆœ์œผ๋กœ ๋งค๊ฒจ์ ธ ์žˆ์–ด, ๋ฐ”๋กœ ์•ž๋ฒˆ

programmers.co.kr