[TIL_Carrotww] 20 - 22/09/27

μœ ν˜•μ„Β·2022λ…„ 9μ›” 27일
0

TIL

λͺ©λ‘ 보기
24/138
post-thumbnail

πŸ“Carrotww의 μ½”λ”© 기둝μž₯

🧲 python 문법 Tip

πŸ” μ•Œκ³ λ¦¬μ¦˜ ν’€λ©° python μ‘μš© 및 κΈ°μ–΅ν•˜κΈ°

result = []
temp = [1, 2, 3, 4, 5]
if result[-1] == temp.pop()
# 이 μƒνƒœμ—μ„œλŠ” resultκ°€ λΉ„μ–΄μžˆκΈ° λ•Œλ¬Έμ— indexκ°€ μ‘΄μž¬ν•˜μ§€ μ•Šμ•„ Error λ°œμƒ
------------------------------------------
if result[-1:] == [temp.pop()]
# μŠ¬λΌμ΄μ‹±μ€ λ²”μœ„ λ°–μ˜ index 접근이 μ—λŸ¬κ°€ λ°œμƒν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ—
# μœ„μ™€ 같은 λ°©μ‹μœΌλ‘œ 빈 listλ₯Ό λ§Œλ“€μ–΄ μ£Όλ©° λΉ„κ΅ν•œλ‹€λ©΄
# result = [temp[-1]] 와 같은 μ‹μœΌλ‘œ ꡳ이 listλ₯Ό μ΄ˆκΈ°ν™” ν•  ν•„μš”κ°€ μ—†λ‹€

🧲 μ•Œκ³ λ¦¬μ¦˜

πŸ” μ–΄μ œ TILκ³Ό WIL μ—μ„œ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 10νŽ˜μ΄μ§€ κΉŒμ§€ ν‘Όλ‹€κ³  ν–ˆμ§€λ§Œ μƒκ°ν•΄λ³΄λ‹ˆ λ„ˆλ¬΄ λΉ„νš¨μœ¨ 적인 것 κ°™μ•„ μ΅œμ’… λͺ©ν‘œμΈ μ½”λ”©ν…ŒμŠ€νŠΈμ— μ΅œμ ν™”λ  수 μžˆλ„λ‘ 일단 κ³΅λΆ€ν•˜λ €κ³  ν•œλ‹€.
κ°€μž₯ 기본이 되며 λ§Žμ€ λ¬Έμ œκ°€ λ‚˜μ˜€λŠ” μŠ€νƒ/큐, μ •λ ¬, 완전탐색, ν•΄μ‹œ, DFS/BFS, 이뢄탐색 μœ„μ£Όλ‘œ 문제λ₯Ό ν’€λ©° 주에 ν•œ 두 λ¬Έμ œμ”© Greedy, Dynamic Programming, GraphκΉŒμ§€ ν’€λ €κ³  ν•œλ‹€.
이런 λ°©μ‹μœΌλ‘œ 풀닀보면 λ§Žμ€ 문제λ₯Ό ν‘ΈλŠ”κ²ƒμ€ λ‹Ήμ—°ν•  것이기 λ•Œλ¬Έμ— 큰 λͺ©μ μ€ ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ 문제 5λ ˆλ²¨μ„ μ œμ™Έν•œ λͺ¨λ“  문제λ₯Ό ν‘ΈλŠ”κ²ƒ, κ·Έ λͺ©μ μ„ 효율적으둜 μ„±μ •ν•˜λ©° 이루기 μœ„ν•΄ 문제λ₯Ό μœ ν˜•λ³„λ‘œ ν’€λ©° 정리λ₯Ό ν•΄λ‚˜κ°€λ©° ν‘ΈλŠ”κ²ƒ.
ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μœ ν˜•λ³„ 문제λ₯Ό 보면 각 μœ ν˜• λ¬Έμ œλ“€μ„ 1~3 λ¬Έμ œμ”© 깔짝(?) 거리며 ν’€μ—ˆλ‹€.
이젠 ν•΄λ‹Ή μœ ν˜• 문제λ₯Ό μ™„λ²½ν•˜κ²Œ νƒλ‹‰ν•˜κ³  λΆ€μ‘±ν•˜λ©΄ 더 ν‘ΈλŠ” λ°©ν–₯으둜 μ§„ν–‰ν•˜λ €κ³ ν•œλ‹€.

λ˜ν•œ 문제λ₯Ό ν‘Ό ν›„ 더 λ‚˜μ€κ²ƒμ΄ μžˆλ‚˜ κ³ λ―Όν•˜λŠ” μ‹œκ°„μ„ μ’€ 더 가지렀고 ν•œλ‹€.
λ‹€μ‹œ ν’€μ–΄λ³΄λŠ” 것은 덀 😎

🧲 μŠ€νƒ/큐

πŸ” μ˜¬λ°”λ₯Έ κ΄„ν˜Έ Level2 - μŠ€νƒμ˜ 기본쀑에 기본이 λ˜λŠ” 문제 return 뢀뢄을 μ’€ 더 이쁘게 ν‘œν˜„ν•˜μ˜€λ‹€.

def solution(ss):
    result = []
    for s in ss:
        if s == '(':
            result.append(s)
        else:
            if result == []:
                return False
            result.pop()
    return result == []

πŸ” κΈ°λŠ₯개발 Level2

  • μŠ€νƒμ„ μ‚¬μš©ν•˜μ§€ μ•Šμ€ 첫 풀이
def solution(progresses, speeds):
    temp, result = [], []
    for i in range(len(progresses)):
        success, cnt = progresses[i], 0
        while success < 100:
            success += speeds[i]
            cnt += 1
        temp.append(cnt)
    build, MAX = 0, temp[0]
    for te in temp:
        if te <= MAX:
            build += 1
            continue
        MAX = te
        result.append(build)
        build = 1
    if build != 0:
        result.append(build)
    return result
  • λ‹€λ₯Έ μ‚¬λžŒμ˜ 풀이λ₯Ό μ°Έκ³ ν•˜μ—¬ λ‹€μ‹œ ν’€μ–΄λ³Έ 풀이 (μŠ€νƒ μ‚¬μš©)
import math
def solution(progresses, speeds):
    result, stack = [], []
    cnt = 0
    for pr, sp in zip(progresses, speeds):
        temp = math.ceil((100 - pr) / sp)
        if not stack or stack[-1][0] < temp:
            stack.append([temp, 1])
        else:
            stack[-1][1] += 1
    return [x[1] for x in stack]

πŸ’‘ κΈ°μ–΅ν•˜κΈ°

πŸ”μΌλ‹¨ (100 - pr) / sp λŠ” 쑰금만 μƒκ°ν•˜λ©΄ λ– μ˜¬λ¦΄ 수 μžˆμ—ˆλ˜ μˆ˜μ‹μΈλ° ꡳ이 while 문을 μ‚¬μš©ν•˜μ—¬ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό n^2 으둜 λ§Œλ“ κ²ƒμ€ 아쉽닀 γ… 
zip 을 μ‚¬μš©ν• κΉŒ ν–ˆμ§€λ§Œ 일단 ν’€μ–΄λ³΄μžλŠ” 마음으둜 첫 풀이 λ°©μ‹μœΌλ‘œ ν‘Ό 것이고 힌트λ₯Ό μ–»κ³  λ‚˜λ¦„ κΉ”λ”ν•˜κ²Œ 풀이λ₯Ό ν•΄λ³΄μ•˜λ‹€.
ν•œ 가지 생각에 얽맀이지 말고 μ—¬λŸ¬κ°€μ§€ 방면으둜 μƒκ°ν•˜μ—¬ ν’€μ–΄λ³΄μž

profile
Carrot_hyeong

0개의 λŒ“κΈ€