JUST DO IT!

[TIL] KDT_20230413 ๋ณธ๋ฌธ

TIL

[TIL] KDT_20230413

sunhokimDev 2023. 4. 13. 16:01

๐Ÿ“š KDT WEEK 2 DAY 4 TIL

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ’€์ด์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ•™์Šต

  • ํ•ด์‹œ(Hash)
  • ํƒ์š•๋ฒ•(Greedy)
  • ์ •๋ ฌ(Sort)

 


 

ํ•ด์‹œ(Hash) ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • Set, Dictionary๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํƒ์ƒ‰ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ O(1)๋กœ ํšจ์œจ์  ์ด์šฉ
  • ์„ ํ˜• ๋ฐฐ์—ด์—์„œ๋Š” ์ˆซ์ž๋กœ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒฝ์šฐ์— O(1)๋กœ ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Œ

์˜ˆ์‹œ ๋ฌธ์ œ : ์™„์ฃผํ•˜์ง€ ๋ชปํ•œ ์„ ์ˆ˜

๋”๋ณด๊ธฐ

def solution(participant, completion):
    dic = {}
    
    for i in participant:
        dic[i] = dic.get(i,0) + 1
    for j in completion:
        dic[j] = dic.get(j,0) - 1
    
    result = [x for x,y in dic.items() if y > 0]
    return result[0]

๊ฐ„๋‹จํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด์—ˆ๋‹ค.

Dictionary ๊ตฌ์กฐ์—์„œ .get(x,y) ํ•จ์ˆ˜๋Š” 'x' ํ‚ค ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด 0 ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.


 


 

ํƒ์š•๋ฒ•(Greedy) ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐ ๋‹จ๊ณ„์—์„œ ๊ทธ ์ˆœ๊ฐ„์— ์ตœ์ ์ด๋ผ๊ณ  ์ƒ๊ฐ๋˜๋Š” ๊ฒƒ์„ ์„ ํƒ!
  • ๋‹จ, ํ˜„์žฌ์˜ ์„ ํƒ์ด ๋งˆ์ง€๋ง‰ ํ•ด๋‹ต์˜ ์ตœ์ ์„ฑ์„ ํ•ด์น˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค
  • ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋”ฐ์ง€์ง€ ์•Š์•„๋„ ๊ทธ ์ˆœ๊ฐ„๋งˆ๋‹ค ์ตœ์„ ์˜ ์„ ํƒ์„ ํ•œ๋‹ค.

 

์˜ˆ์‹œ๋ฌธ์ œ : ์ฒด์œก๋ณต

๋”๋ณด๊ธฐ

def solution(n, lost, reserve):
    l = [1] * (n + 2) # ๊ตฌํ˜„์˜ ํŽธ๋ฆฌ์„ฑ์„ ์œ„ํ•ด ๊ฐ€์žฅ ์•ž๊ณผ ๋’ค์— ๊ฐ€์ƒ์˜ ์ธ๋ฌผ ์ถ”๊ฐ€
    for i in reserve:
        l[i] += 1
    for i in lost:
        l[i] -= 1
    
    for i in range(1, n+1):
        if l[i] == 2 and l[i-1] == 0:
            l[i], l[i-1] = 1,1
        if l[i] == 2 and l[i+1] == 0:
            l[i], l[i+1] = 1,1
    
    return len([x for x in l[1:-1] if x > 0]) # ๊ฐ€์ƒ์˜ ์ธ๋ฌผ์„ ์ œ์™ธํ•˜๊ณ  ์ถœ๋ ฅ

์ „์ฒด ํ•™์ƒ์˜ ์ˆ˜ n, ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ•œ ํ•™์ƒ๋“ค์˜ ๋ฒˆํ˜ธ ๋ฐฐ์—ด lost, ์—ฌ๋ฒŒ ์ฒด์œก๋ณต์„ ๊ฐ€์ ธ์˜จ ํ•™์ƒ ๋ฒˆํ˜ธ ๋ฐฐ์—ด reserve ์ด๋‹ค.

์ž์‹ ์˜ ๋ฒˆํ˜ธ ๋ฐ”๋กœ ์•ž ๋’ค๋กœ๋งŒ ์ฒด์œก๋ณต์„ ๋นŒ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•  ๋•Œ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ํ•™์ƒ์ด ์ฒด์œก ์ˆ˜์—…์„ ๋“ฃ๊ฒŒ ํ•ด์•ผํ•œ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง„ ๊ดœ์ฐฎ์€๋ฐ, ์—ฌ๋ฒŒ ์ฒด์œก๋ณต์„ ๊ฐ€์ ธ์˜จ ํ•™์ƒ์ด ์ฒด์œก๋ณต์„ ๋„๋‚œ๋‹นํ–ˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.

 

๊ทธ๋ž˜์„œ ์‚ฌ์šฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€.. ๋ชจ๋“  ํ•™์ƒ๋“ค์—๊ฒŒ ์ฒด์œก๋ณต์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ( ๋ฐฐ์—ด์— ์ฒด์œก๋ณต ๊ฐœ์ˆ˜์ธ 1 ๋ถ€์—ฌ )

์ž…๋ ฅ๋ฐ›์€ ์ธ์ž์™€ for๋ฌธ์œผ๋กœ ๊ฐ ๋ฒˆํ˜ธ๋งˆ๋‹ค ์ฒด์œก๋ณต์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค!

 

๊ทธ ๋’ค๋กœ๋Š” ๊ทธ๋ฆฌ๋””๋กœ ๊ทธ๋•Œ๊ทธ๋•Œ ์ตœ์ ์˜ ์„ ํƒ(์™ผ์ชฝ, ์˜ค๋ฅธ์ชฝ์— ์ฒด์œก๋ณต์„ ๋‹น์žฅ ๋นŒ๋ ค์ค˜์•ผ ํ•˜๋Š”์ง€)์„ ํ†ตํ•ด ๊ตฌํ˜„ํ•œ๋‹ค.


 


 

์ •๋ ฌ(Sort) ์•Œ๊ณ ๋ฆฌ์ฆ˜

  • ์ˆซ์ž์˜ ๋น„๊ต๊ฐ€ ํ•„์š”ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์ ํ•ฉํ•˜๋‹ค
  • ์ •๋ ฌ ํ›„ ๋‹ค์Œ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์‹œ๊ฐ„ ๋ณต์žก๋„์— ๋„์›€์„ ์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

 

์˜ˆ์‹œ ๋ฌธ์ œ : ๊ฐ€์žฅ ํฐ ์ˆ˜

๋”๋ณด๊ธฐ

def solution(numbers):
    li = [str(x) for x in numbers]
    li.sort(key=lambda x : (x * 4)[:4], reverse = True)
    
    if li[0] == "0": # ์—ฃ์ง€ ์ผ€์ด์Šค ์ฒ˜๋ฆฌ
        return "0"
    else:
        return "".join(li)

์ฃผ์–ด์ง„ ๋ฐฐ์—ด์˜ ์ˆซ์ž ์กฐํ•ฉ์„ ํ†ตํ•ด ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๋ฌธ์ œ.

ex) ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ€ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 6210

 

์ฒ˜์Œ ๋ดค์„ ๋•Œ๋Š” ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์šธ ๊ฒƒ ๊ฐ™์•˜๋Š”๋ฐ.. ์ฝ”๋“œ๋Š” ๋งŽ์ด ๊ฐ„๋‹จํ–ˆ๋‹ค.

numbers์˜ ์›์†Œ๊ฐ€ 0 ์ด์ƒ 1,000์ดํ•˜๋ผ๋Š” ์ ์„ ํ™œ์šฉํ•ด์„œ

๊ฐ ์ˆซ์ž๋กœ๋งŒ ๋งŒ๋“ค์–ด์ง„ ๋„ค์ž๋ฆฟ์ˆ˜( (x*4)[:4] )๋ฅผ ํ†ตํ•ด ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜๊ณ  ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋..

 

๋ฐฉ๋ฒ•์€ ๊ฐ„๋‹จํ•˜๋‚˜ ์ €๊ฑธ ๋– ์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด ์–ด๋ ต๊ฒ ๋‹ค..๐Ÿ˜‚


 


 

๐Ÿค” ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์–ด๋ ค์› ๋˜ ๋‚ด์šฉ

์—ฌ๋Ÿฌ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์˜ˆ์‹œ๋ฌธ์ œ๋ฅผ ํ†ตํ•ด ์ ํ•ฉํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ๋‹ค.

๋ณดํ†ต ์ฒ˜์Œ ๋‚ด๊ฐ€ ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์— ๋†€๋ž๋‹ค..

์•„์ง ํ•œ์ฐธ ๋ถ€์กฑํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ณ .. ๊ฐ•์‚ฌ๋‹˜ ๋ง๋Œ€๋กœ ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ’€์–ด๋ณด๋Š”๊ฒŒ ์ง€๊ธˆ ๋‚˜์—๊ฒŒ ๊ฐ€์žฅ ํ•„์š”ํ•œ ๋ถ€๋ถ„์ธ ๋“ฏ ํ•˜๋‹ค ๐Ÿ˜ญ

 

'TIL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[TIL]KDT_20230417  (0) 2023.04.17
[TIL] KDT_20230414  (0) 2023.04.14
[TIL] KDT_20230412  (0) 2023.04.12
[TIL] KDT_20230411  (0) 2023.04.11
[TIL] KDT_20230410  (0) 2023.04.10