πŸš€
Growth log
  • About me
  • I LEARNED
    • General
      • 개발자 κΏ€νŒ
      • κ·Έλ‘œμŠ€ν•΄ν‚Ή 기초
      • κ°œλ°œμžμ—κ²Œ 도메인 지식은 μ–Όλ§ˆλ‚˜ μ€‘μš”ν• κΉŒ?
      • DTO λ…ΌμŸμ— λŒ€ν•˜μ—¬
      • MSAλž€?
    • Seminar
      • ν…ŒμŠ€νŠΈ 컀버리지 100% - SLASH 21
      • TDDκ°€ μ‹€νŒ¨ν•˜λŠ” 이유 - by μ΄κ·œμ›λ‹˜
      • λŒ€κ·œλͺ¨ νŠΈλž˜ν”½ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ μ„±λŠ₯ νŠœλ‹ λ…Έν•˜μš° λ‹€ μ•Œλ € λ“œλ¦Ό|λΌμΈκ°œλ°œμ‹€λ‘
      • 결제 μ‹œμŠ€ν…œμ˜ SDK와 API λ””μžμΈ - SLASH 21
    • Web
      • SOP와 CORS
    • Spring & OOP
      • DTO vs VO
    • Ruby On Rails
      • Rails lib 디렉토리에 λŒ€ν•˜μ—¬
      • Rails의 concernsλž€?
      • Railsμ—μ„œμ˜ GC μž‘λ™μ›λ¦¬
      • Eager loading vs Lazy loading
      • Rails ν™˜κ²½ ꡬ성
      • ActionCable
      • πŸ“”Perfect ruby on rails
        • MVC νŒ¨ν„΄μΈ Rails
        • Ruby on Rails κΈ°λ³Έ - 컨트둀러
        • Ruby on Rails κΈ°λ³Έ - λ·°
        • Ruby on Rails κΈ°λ³Έ - λͺ¨λΈ
        • μŠ€μΊν΄λ”© κΈ°λŠ₯을 μ‚¬μš©ν•œ Rails 개발 기초
        • λ·° 개발
        • λͺ¨λΈ 개발
        • λͺ¨λΈ 개발 - 낙관적 λ™μ‹œ μ‹€ν–‰ μ œμ–΄
        • λͺ¨λΈ 개발 - μœ νš¨μ„± 검사 κ΅¬ν˜„
        • λͺ¨λΈ 개발 - Association
        • λͺ¨λΈ 개발 - 콜백
        • λͺ¨λΈ 개발 - λ§ˆμ΄κ·Έλ ˆμ΄μ…˜
        • λͺ¨λΈ 개발 - 데이터 μ΄ˆκΈ°ν™”
        • 컨트둀러 개발 - μš”μ²­ 정보 μΆ”μΆœ
        • 컨트둀러 개발 - 응닡
        • 컨트둀러 개발 - μƒνƒœ 관리
        • λΌμš°νŒ… - RESTful
        • λΌμš°νŒ… - RESTful μΈν„°νŽ˜μ΄μŠ€μ˜ μ‚¬μš©μž μ •μ˜ν™”
        • λΌμš°νŒ… - RESTful ν•˜μ§€ μ•Šμ€ 라우트 μ •μ˜
        • ν…ŒμŠ€νŠΈ
        • ν…ŒμŠ€νŠΈ - μ€€λΉ„
        • ν…ŒμŠ€νŠΈ - Unit ν…ŒμŠ€νŠΈ
        • ν…ŒμŠ€νŠΈ - Functional ν…ŒμŠ€νŠΈ
        • ν…ŒμŠ€νŠΈ - Integration ν…ŒμŠ€νŠΈ
        • ν΄λΌμ΄μ–ΈνŠΈ 개발 - Sprockets vs Webpacker
        • ν΄λΌμ΄μ–ΈνŠΈ 개발 - Sprockets
    • Node.js & Express
      • κΈ°λ³Έ κ°œλ…
      • npx
    • Programing Language
      • Java
        • JavaDoc에 λŒ€ν•΄
        • invocation에 λŒ€ν•΄μ„œ
        • μ–΄λ…Έν…Œμ΄μ…˜
        • μΆ”μƒν΄λž˜μŠ€ & μΈν„°νŽ˜μ΄μŠ€
        • Package
        • μ˜€λ²„λ‘œλ”© vs μ˜€λ²„λΌμ΄λ”©
      • Javascript
        • TCP School 훑어보기
          • νƒ€μž…
          • ν˜• λ³€ν™˜
          • λ³€μˆ˜
          • μ—°μ‚°μž
          • 반볡문
          • λ°°μ—΄(array)
          • ν•¨μˆ˜
          • ν•¨μˆ˜ - μŠ€μ½”ν”„μ™€ ν˜Έμ΄μŠ€νŒ…
          • ν•¨μˆ˜ - λ§€κ°œλ³€μˆ˜μ™€ 인수
          • ν•¨μˆ˜ - 미리 μ •μ˜λœ μ „μ—­ ν•¨μˆ˜
          • 객체
          • ν”„λ‘œν† νƒ€μž…
          • DOM
          • BOM - Window 객체
          • 이벀트(event)
      • Ruby
        • πŸ“”νΌνŽ™νŠΈ 루비
    • DB
      • Redis
        • Redis κ°œμš”
      • Index(인덱슀)?
      • DB Transaction & Lock
      • λ™μ‹œμ„± μ œμ–΄μ— κ΄€ν•˜μ—¬
      • Lock(잠금)μ΄λž€?
      • ActiveRecord lock vs with_lock
      • Table lock vs Row lock
      • WHERE 1=1 ꡬ문에 λŒ€ν•˜μ—¬
      • COUNT(*) vs COUNT(indexed column)
      • πŸ“•κ΄€κ³„ν˜• λ°μ΄ν„°λ² μ΄μŠ€ μ‹€μ „μž…λ¬Έ
      • πŸ“”SQL 첫걸음
      • πŸ“”λͺ¨λ‘μ˜ SQL
    • Design Patterns
      • Observer pattern
      • Flyweight pattern
      • Singleton pattern
    • OOP
      • πŸ“”μ˜€λΈŒμ νŠΈ
        • 6μž₯ λ©”μ‹œμ§€μ™€ μΈν„°νŽ˜μ΄μŠ€
      • ν΄λž˜μŠ€κ°„ 관계 간단 정리
    • Regex
    • Collaboration
      • Git
      • Sourcetree
  • DAILY REVIEW
    • 2021
      • August
        • 2021-08-25(Wed)
        • 2021-08-23(Mon)
        • 2021-08-11(Wed)
        • 2021-08-04(Wed)
        • 2021-08-03(Tue)
        • 2021-08-02(Mon)
      • July
        • 2021-07-29(Thu)
        • 2021-07-26(Mon)
        • 2021-07-23(Fri)
        • 2021-07-22(Thu)
        • 2021-07-21(Wed)
        • 2021-07-20(Tue)
        • 2021-07-19(Mon)
        • 2021-07-15(Thu)
        • 2021-07-14(Wed)
        • 2021-07-13(Tue)
        • 2021-07-12(Mon)
      • June
        • 2021-06-05(Sat)
        • 2021-06-04(Fri)
        • 2021-06-03(Thu)
        • 2021-06-02(Wed)
        • 2021-06-01(Tue)
      • May
        • 2021-05-31(Mon)
        • 2021-05-29(Sat)
        • 2021-05-28(Fri)
        • 2021-05-27(Thu)
        • 2021-05-26(Wed)
        • 2021-05-25(Tue)
        • 2021-05-24(Mon)
        • 2021-05-22(Sat)
        • 2021-05-21(Fri)
        • 2021-05-20(Thu)
        • 2021-05-19(Wed)
        • 2021-05-18(Tue)
        • 2021-05-17(Mon)
        • 2021-05-15(Sat)
        • 2021-05-13(Thu)
        • 2021-05-12(Wed)
        • 2021-05-11(Tue)
        • 2021-05-10(Mon)
        • 2021-05-03(Mon)
      • April
        • 2021-04-30(Fri)
        • 2021-04-29(Thu)
        • 2021-04-28(Wed)
        • 2021-04-27(Tue)
        • 2021-04-26(Mon)
        • 2021-04-24(Sat)
        • 2021-04-23(Fri)
        • 2021-04-21(Wed)
        • 2021-04-20(Tue)
        • 2021-04-19(Mon)
        • 2021-04-18(Sun)
        • 2021-04-16(Fri)
        • 2021-04-15(Thu)
        • 2021-04-14(Wed)
        • 2021-04-12(Mon)
        • 2021-04-11(Sun)
        • 2021-04-09(Fri)
        • 2021-04-08(Thu)
        • 2021-04-06(Tue)
        • 2021-04-05(Mon)
        • 2021-04-04(Sun)
        • 2021-04-03(Sat)
        • 2021-04-02(Fri)
        • 2021-04-01(Thu)
      • March
        • 2021-03-29(Mon)
        • 2021-03-28(Sun)
        • 2021-03-26(Fri)
        • 2021-03-25(Thu)
        • 2021-03-24(Wed)
        • 2021-03-23(Tue)
        • 2021-03-22(Mon)
        • 2021-03-21(Sun)
        • 2021-03-20(Sat)
        • 2021-03-17(Wed)
        • 2021-03-16(Tue)
        • 2021-03-15(Mon)
        • 2021-03-12(Fri)
        • 2021-03-11(Thu)
        • 2021-03-10(Wed)
        • 2021-03-09(Tue)
        • 2021-03-08(Mon)
        • 2021-03-07(Sun)
        • 2021-03-05(Fri)
        • 2021-03-03(Wed)
        • 2021-03-02(Tue)
        • 2021-03-01(Mon)
      • Feb
        • 2021-02-26(Fri)
        • 2021-02-25(Thu)
        • 2021-02-24(Wed)
        • 2021-02-23(Tue)
        • 2021-02-22(Mon)
        • 2021-02-19(Fri)
        • 2021-02-18(Thu)
        • 2021-02-17(Wed)
        • 2021-02-16(Tue)
        • 2021-02-15(Mon)
        • 2021-02-14(Sun)
        • 2021-02-13(Sat)
        • 2021-02-12(Fri)
        • 2021-02-10(Wed)
        • 2021-02-09(Tue)
        • 2021-02-08(Mon)
        • 2021-02-07(Sun)
        • 2021-02-05(Fri)
        • 2021-02-03(Wed)
        • 2021-02-02(Tue)
        • 2021-02-01(Mon)
      • Jan
        • 2021-01-29(Fri)
        • 2021-01-28(Thu)
        • 2021-01-27(Wed)
        • 2021-01-26(Tue)
        • 2021-01-25(Mon)
        • 2021-01-23(Sat)
        • 2021-01-22(Fri)
        • 2021-01-20(Wed)
        • 2021-01-19(Tue)
        • 2021-01-18(Mon)
        • 2021-01-12(Tue)
        • 2020-01-11(Mon)
        • 2021-01-08(Fri)
        • 2021-01-07(Thu)
        • 2021-01-06(Wed)
        • 2021-01-05(Tue)
        • 2021-01-04(Mon)
        • 2021-01-01(Fri)
    • 2020
      • Dec
        • 2020-12-30(Thu)
        • 2020-12-25(Fri)
        • 2020-12-24(Thu)
        • 2020-12-23(Wed)
        • 2020-12-22(Tue)
        • 2020-12-21(Mon)
        • 2020-12-18 (Fri)
      • Nov
        • 2020-11-30(Mon)
        • 2020-11-28(Sat)
        • 2020-11-26(Thu)
        • 2020-11-25(Wed)
        • 2020-11-24(Tue)
        • 2020-11-23(Mon)
        • 2020-11-22(Sun)
        • 2020-11-20(Fri)
        • 2020-11-19(Thu)
        • 2020-11-18(Wed)
        • 2020-11-17(Tue)
        • 2020-11-14(Sat)
        • 2020-11-13(Fri)
        • 2020-11-12(Thu)
        • 2020-11-11(Wed)
        • 2020-11-09(Mon)
        • 2020-11-07(Sat)
        • 2020-11-05(Thu)
        • 2020-11-04(Wed)
        • 2020-11-03(Tue)
        • 2020-11-02(Mon)
    • Good article 아카이빙
Powered by GitBook
On this page
  • 상세 ν•™μŠ΅ λ‚΄μš©
  • μ‹œκ°„ λ³΅μž‘λ„λž€?
  • λΉ…μ˜€
  • λΆ„ν•  μƒν™˜ 뢄석
  • ν•™μŠ΅ λ‚΄μš©μ— λŒ€ν•œ 개인적인 총평
  • λ‹€μŒ ν•™μŠ΅ κ³„νš

Was this helpful?

  1. DAILY REVIEW
  2. 2021
  3. March

2021-03-20(Sat)

ν•­λͺ©

λ‚΄μš©

ν•™μŠ΅ λ‚ μ§œ

2021-03-20(ν† )

ν•™μŠ΅ μ‹œκ°„

11:00~24:00

ν•™μŠ΅ λ²”μœ„ 및 주제

λΉ…μ˜€, python

ν•™μŠ΅ λͺ©ν‘œ

λΉ…μ˜€μ™€ python의 ν—·κ°ˆλ¦¬λŠ” 뢀뢄을 νŒŒμ•…ν•œλ‹€.

λ™λ£Œ ν•™μŠ΅ 방법

-

상세 ν•™μŠ΅ λ‚΄μš©

μ½”λ”©ν…ŒμŠ€νŠΈ 문제λ₯Ό ν’€λ˜ 쀑 μ‹œκ°„λ³΅μž‘λ„κ°€ μ• λ§€ν•œ 지점이 μžˆμ–΄μ„œ λ‹€μ‹œ ν•œλ²ˆ ν•™μŠ΅μ„ μ§„ν–‰ν•˜μ˜€λ‹€. 이후 ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ μ½”λ”©ν…ŒμŠ€νŠΈ μ—°μŠ΅μ˜ ν•΄μ‹œ, μŠ€νƒ 문제λ₯Ό ν’€μ—ˆλ‹€.

μ‹œκ°„ λ³΅μž‘λ„λž€?

μ•Œκ³ λ¦¬μ¦˜μ΄ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•œ μ‹œκ°„(μ—°μ‚°)의 횟수λ₯Ό λ§ν•œλ‹€. μ•Œκ³ λ¦¬μ¦˜μ€ 'μ‹œκ°„κ³Ό 곡간이 νŠΈλ ˆμ΄λ“œμ˜€ν”„' 관계이기 λ•Œλ¬Έμ—, μˆ˜ν–‰μ‹œκ°„κ³Ό λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ„ ν‰κ°€κΈ°μ€€μœΌλ‘œ λ‘”λ‹€.

  • μ‹œκ°„ λ³΅μž‘λ„(Time Complexity): μˆ˜ν–‰μ‹œκ°„μ— ν•΄λ‹Ή

  • 곡간 λ³΅μž‘λ„(Space Complexity): λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰μ— ν•΄λ‹Ή

μœ„ λ³΅μž‘λ„λ“€μ€ μž…λ ₯의 크기가 μΆ©λΆ„νžˆ 클 λ•Œ μ˜λ―Έμžˆλ‹€.

λΉ…μ˜€

λΉ…μ˜€(O, big-O)λž€ μž…λ ₯값이 λ¬΄ν•œλŒ€λ‘œ ν–₯ν•  λ•Œ ν•¨μˆ˜μ˜ μƒν•œμ„ μ„€λͺ…ν•˜λŠ” μˆ˜ν•™μ  ν‘œκΈ° 방법이닀.

λΉ…μ˜€λŠ” κ°€μž₯ 늦게 싀행될 λ•Œ, 즉 μƒν•œ(Upper Bound)을 μ˜λ―Έν•œλ‹€. 이외에도 κ°€μž₯ 빨리 싀행될 λ•Œ, 즉 ν•˜ν•œ(Lower Bound)을 λ‚˜νƒ€λ‚΄λŠ” λΉ…μ˜€λ©”κ°€, 평균을 μ˜λ―Έν•˜λŠ” 빅세타가 μžˆλŠ”λ°, 보톡 평균적인 μ‹œκ°„λ³΄λ‹€λŠ” μƒν•œ μ‹œκ°„μœΌλ‘œ λ‹¨μˆœν™”ν•΄μ„œ 주둜 ν‘œν˜„ν•œλ‹€.

μƒν•œμ„ μ΅œμ•…μ˜ κ²½μš°μ™€ ν˜Όλ™ν•˜μ§€ 말자. λΉ…μ˜€ ν‘œκΈ°λ²•μ€ μ •ν™•ν•˜κ²Œ μ“°κΈ°μ—λŠ” λ„ˆλ¬΄ κΈΈκ³  λ³΅μž‘ν•œ ν•¨μˆ˜λ₯Ό 'μ λ‹Ήνžˆ μ •ν™•ν•˜κ²Œ' ν‘œν˜„ν•˜λŠ” 방법일 뿐, μ΅œμ•…μ˜ 경우/평균적인 경우의 μ‹œκ°„ λ³΅μž‘λ„μ™€λŠ” μ•„λ¬΄λŸ° 관계가 μ—†λŠ” κ°œλ…μ΄λΌλŠ” 점에 μœ μ˜ν•΄μ•Ό ν•œλ‹€. μ΅œμ„ μ˜ κ²½μš°μ—λ„ μƒν•œμ΄ μ‘΄μž¬ν•˜κ³ , μ—­μ‹œ 평균, μ΅œμ•…μ˜ κ²½μš°μ—λ„ μƒν•œμ΄ μ‘΄μž¬ν•œλ‹€. λΉ…μ˜€ ν‘œκΈ°λ²•μ€ μ£Όμ–΄μ§„(μ΅œμ„ /μ΅œμ•…/평균) 경우의 μˆ˜ν–‰ μ‹œκ°„μ˜ μƒν•œμ„ λ‚˜νƒ€λ‚Έλ‹€.

λΆ„ν•  μƒν™˜ 뢄석

λΉ…μ˜€μ™€ ν•¨κ»˜ ν•¨μˆ˜μ˜ λ™μž‘μ„ μ„€λͺ…ν•  λ•Œ μ€‘μš”ν•œ 뢄석 방법 쀑 ν•˜λ‚˜μ΄λ‹€. μ‹œκ°„ λ˜λŠ” λ©”λͺ¨λ¦¬λ₯Ό λΆ„μ„ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ˜ λ³΅μž‘λ„λ₯Ό 계산할 λ•Œ, μ•Œκ³ λ¦¬μ¦˜ 전체λ₯Ό 보지 μ•Šκ³  μ΅œμ•…μ˜ κ²½μš°λ§Œμ„ μ‚΄νŽ΄λ³΄λŠ” 것은 μ§€λ‚˜μΉ˜κ²Œ λΉ„κ΄€μ μ΄λΌλŠ” 이유둜 λΆ„ν•  μƒν™˜ 뢄석 방법이 λ“±μž₯ν•˜λŠ” 계기가 됐닀. κ°€λ Ή '동적 λ°°μ—΄'의 경우 더블링이 μΌμ–΄λ‚˜λŠ” 일은 μ–΄μ©Œλ‹€ ν•œ λ²ˆλΏμ΄μ§€λ§Œ, 이둜 인해 'μ•„μ΄ν…œ μ‚½μž… μ‹œ μ‹œκ°„ λ³΅μž‘λ„λŠ” O(n)이닀.'라고 μ–˜κΈ°ν•˜λŠ” 건 μ§€λ‚˜μΉ˜κ²Œ 비관적이고 μ •ν™•ν•˜μ§€λ„ μ•Šλ‹€. λΆ„ν•  μƒν™˜μ€ μ΅œμ•…μ˜ 경우λ₯Ό μ—¬λŸ¬ λ²ˆμ— 걸쳐 골고루 λ‚˜λˆ μ£ΌλŠ” ν˜•νƒœλ‘œ μ•Œκ³ λ¦¬μ¦˜μ˜ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό 계산할 수 μžˆλ‹€.

자 이제 파이썬 μ—°μ‚°λ“€μ˜ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό ν™•μΈν•΄λ³΄μž.

리슀트

μ—°μ‚°

μ‹œκ°„ λ³΅μž‘λ„

len(a)

O(1)

a[i]

O(1)

a[i:j]

O(j-i)

elem in a

O(n)

a.count(elem)

O(n)

a.index(elem)

O(n)

a.append(elem)

O(1)

a.pop()

O(1)

a.pop(0)

O(n)

del a[i]

O(n)

a.sort()

O(nlogn)

min(a), max(a)

O(n)

a.reverse()

O(n)

λ”•μ…”λ„ˆλ¦¬

μ—°μ‚°

μ‹œκ°„ λ³΅μž‘λ„

len(a)

O(1)

a[key]

O(1)

a[key] = value

O(1)

key in a

O(1)

λ¬Όλ‘  μ΅œμ•…μ˜ κ²½μš°μ—” O(n)이 될 수 μžˆλ‹€.

ν•™μŠ΅ λ‚΄μš©μ— λŒ€ν•œ 개인적인 총평

μ½”λ”© ν…ŒμŠ€νŠΈ 문제λ₯Ό ν‘ΈλŠ”κ²Œ 즐겁닀. κ·Έ λ™μ•ˆ ν”„λ‘œμ νŠΈλ₯Ό ν•˜λŠλΌ κΎΈμ€€νžˆ ν•˜μ§€ λͺ»ν–ˆλŠ”λ° μ΄μ œλŠ” 정말 맀일 문제λ₯Ό ν’€μ–΄μ•Όκ² λ‹€ :) python λ©”μ„œλ“œλ“€μ΄ λ„ˆλ¬΄ νŽΈν•˜κ³  λ‚΄λΆ€ λ™μž‘λ„ μ˜ˆμΈ‘μ€ λ˜μ§€λ§Œ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό μ •ν™•νžˆ κΎ€κ³  μžˆλŠ” λŠλ‚Œμ΄ λ“€μ§€ μ•Šμ•˜λ‹€. μ• μ΄ˆμ— μ‹œκ°„ λ³΅μž‘λ„λž€ 뭐지? λ‚΄κ°€ 정말 μ œλŒ€λ‘œ λ‹΅λ³€ν•  수 μžˆλ‚˜? ν•˜λŠ” 의문이 λ“€μ–΄μ„œ λ‹€μ‹œ ν•™μŠ΅ν–ˆλŠ”λ° λ§Œμ‘±μŠ€λŸ½λ‹€. μ΄λŸ°μ‹μœΌλ‘œ λ‚΄κ°€ λͺ¨λ₯΄λŠ” 뢀뢄을 λ‹€μ‹œκΈˆ λŒμ•„λ³΄κ³  μ œλŒ€λ‘œ ν•™μŠ΅ν•΄ λ‚˜κ°€μ•Όκ² λ‹€.

λ‹€μŒ ν•™μŠ΅ κ³„νš

  • λ””μžμΈνŒ¨ν„΄ ν•™μŠ΅

Previous2021-03-21(Sun)Next2021-03-17(Wed)

Last updated 4 years ago

Was this helpful?