ν™ˆ
ENVY BROS
μ·¨μ†Œ

[Rust] 숫자 λ§žμΆ”κΈ° κ²Œμž„

κ°œμš” Rust의 κΈ°λ³Έ κ°œλ…λ“€μ„ μ‹€μ œ ν”„λ‘œκ·Έλž¨ μž‘μ„±μ„ 톡해 μ†Œκ°œν•˜κ³ μž ν•œλ‹€. μš°λ¦¬κ°€ λ‹€λ£¨κ²Œ 될 λ‚΄μš©μ€ let, match, λ©”μ†Œλ“œ, κ΄€λ ¨ ν•¨μˆ˜, 그리고 μ™ΈλΆ€ 크레이트 μ‚¬μš©λ²• 등이닀. 그리고 μ΄μ–΄μ§€λŠ” κΈ€μ—μ„œ, 이 κ°œλ…λ“€μ„ 더 깊게 이해할 수 μžˆλ„λ‘ μ„€λͺ…ν•  μ˜ˆμ •μ΄λ‹€. β€œμˆ«μž λ§žμΆ”κΈ° κ²Œμž„β€μ΄λΌλŠ” 전톡적인 초보자용 ν”„λ‘œκ·Έλž˜λ° 문제λ₯Ό 톡해 μœ„ κ°œλ…...

[DSA] ν•΄μ‹œ 맡을 ν™œμš©ν•œ μΆ”κ°€ 예제

κ°œμš” ν•΄μ‹œ 맡은 맀우 λ‹€μ–‘ν•œ κ³³μ—μ„œ μ‚¬μš©λ˜λ©°, 이λ₯Ό μ•Œκ³ λ¦¬μ¦˜μ— ν™œμš©ν•˜λŠ” 방법은 λ¬΄ν•œνžˆ λ§Žλ‹€. ν•΄μ‹œ 맡의 μ€‘μš”μ„±μ„ κ°μ•ˆν•˜μ—¬, λ‹€μ–‘ν•œ λ¬Έμ œμ—μ„œ ν•΄μ‹œ 맡이 μ–΄λ–»κ²Œ μ‚¬μš©λ  수 μžˆλŠ”μ§€ λͺ‡ 가지 μΆ”κ°€ μ˜ˆμ‹œλ₯Ό μ‚΄νŽ΄λ³΄κ² λ‹€. 인터뷰λ₯Ό ν†΅κ³Όν•˜κΈ° μœ„ν•΄μ„œλŠ” ν•΄μ‹œ 맡에 μ΅μˆ™ν•΄μ Έμ•Ό ν•œλ‹€. 예제 1: μ• λ„ˆκ·Έλž¨ κ·Έλ£Ήν™” 문제 링크 λ¬Έμžμ—΄ λ°°μ—΄ strs...

[DSA] μΉ΄μš΄νŒ…

κ°œμš” ν•΄μ‹œ 맡을 ν™œμš©ν•œ μΉ΄μš΄νŒ…μ€ 일반적인 νŒ¨ν„΄ 쀑 ν•˜λ‚˜μ΄λ‹€. μ—¬κΈ°μ„œ β€œμΉ΄μš΄νŒ…β€μ΄λž€ λ‹€μ–‘ν•œ ν•­λͺ©λ“€μ˜ λ°œμƒ λΉˆλ„λ₯Ό μΆ”μ ν•˜λŠ” 것을 λ§ν•œλ‹€. μ΄λŠ” 우리의 ν•΄μ‹œ 맡이 ν‚€λ₯Ό μ •μˆ˜ 값에 λŒ€μ‘μ‹œν‚€κ²Œ 됨을 μ˜λ―Έν•œλ‹€. μ–΄λ–€ 것을 μ„Έμ–΄μ•Ό ν•  ν•„μš”κ°€ μžˆμ„ λ•Œ, κ·Έ μž‘μ—…μ„ μœ„ν•΄ ν•΄μ‹œ 맡을 μ‚¬μš©ν•˜λŠ” 것을 κ³ λ €ν•΄ λ³Ό 수 μžˆλ‹€. μŠ¬λΌμ΄λ”© μœˆλ„μš°λ₯Ό μ‚΄νŽ΄λ³΄λ©΄, 일뢀 λ¬Έ...

[DSA] μš”μ†Œμ˜ 쑴재 μ—¬λΆ€ 확인

κ°œμš” ν•΄μ‹œ ν…Œμ΄λΈ”μ΄λ‚˜ μ„ΈνŠΈλ₯Ό ν™œμš©ν•˜λŠ” κ°€μž₯ 일반적인 μš©λ„ 쀑 ν•˜λ‚˜λŠ”, μ–΄λ–€ μš”μ†Œκ°€ μ‘΄μž¬ν•˜λŠ”μ§€λ₯Ό $O(1)$의 μ‹œκ°„ λ³΅μž‘λ„λ‘œ ν™•μΈν•˜λŠ” 것이닀. 배열을 μ‚¬μš©ν•  경우 이 μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 데 $O(n)$이 μ†Œμš”λ˜λ―€λ‘œ, ν•΄μ‹œ λ§΅μ΄λ‚˜ μ„ΈνŠΈλ₯Ό ν™œμš©ν•˜λ©΄ μ•Œκ³ λ¦¬μ¦˜μ˜ μ‹œκ°„ λ³΅μž‘λ„λ₯Ό 크게 쀄일 수 μžˆλ‹€. 보톡 μ΄λŠ” μ‹œκ°„ λ³΅μž‘λ„λ₯Ό $O(n^2)$μ—μ„œ $O(n)...

[DSA] ν•΄μ‹±

κ°œμš” μš°μ„ , 자료 ꡬ쑰에 λŒ€ν•΄ κ°„λ‹¨νžˆ μ•Œμ•„λ³΄κ³  λ“€μ–΄κ°€λ³΄μž. 자료 κ΅¬μ‘°λŠ” 데이터λ₯Ό 효율적으둜 κ΅¬μ„±ν•˜λŠ” 방식을 μ˜λ―Έν•œλ‹€. μ—¬κΈ°μ„œ 자료 κ΅¬μ‘°λŠ” μΈν„°νŽ˜μ΄μŠ€μ™€ κ΅¬ν˜„μœΌλ‘œ λ‚˜λˆŒ 수 μžˆλ‹€. μΈν„°νŽ˜μ΄μŠ€λŠ” 자료 κ΅¬μ‘°μ™€μ˜ μƒν˜Έμž‘μš© 방법을 κ·œμ •ν•˜λŠ” 계약과 κ°™λ‹€. μ΄λŠ” μš°λ¦¬κ°€ μˆ˜ν–‰ν•  수 μžˆλŠ” μž‘μ—…κ³Ό ν•„μš”ν•œ μž…λ ₯, κΈ°λŒ€λ˜λŠ” 좜λ ₯ 등을 ν¬ν•¨ν•œλ‹€. 예λ₯Ό λ“€μ–΄, ...

[DSA] λ°°μ—΄κ³Ό λ¬Έμžμ—΄μ˜ 좔가적인 νŒ¨ν„΄λ“€

κ°œμš” 이 κΈ€μ—μ„œλŠ” λ°°μ—΄κ³Ό λ¬Έμžμ—΄μ— κ΄€λ ¨λœ μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” λͺ‡ 가지 좔가적인 νŒ¨ν„΄κ³Ό 일반적인 기법에 λŒ€ν•΄ μ•Œμ•„λ³Ό 것이닀. $O(n)$ λ¬Έμžμ—΄ ꡬ성 이전에 μ–ΈκΈ‰ν–ˆλ“―μ΄ λŒ€λΆ€λΆ„μ˜ μ–Έμ–΄μ—μ„œ λ¬Έμžμ—΄μ€ λΆˆλ³€μ΄λ‹€. μ΄λŠ” λ¬Έμžμ—΄μ— ν•˜λ‚˜μ˜ 문자λ₯Ό μ—°κ²°ν•˜λŠ” 것이 $O(n)$ μ—°μ‚°μž„μ„ μ˜λ―Έν•œλ‹€. λ§Œμ•½ λ¬Έμžμ—΄μ΄ 백만개의 κΈ€μžμ˜ 길이λ₯Ό κ°–λŠ”λ‹€...

[DSA] ꡬ간 ν•©

κ°œμš” ꡬ간 합은 숫자 배열에 μ‚¬μš©ν•  수 μžˆλŠ” 기법이닀. 이 방법은 prefixλΌλŠ” μƒˆ 배열을 λ§Œλ“œλŠ” κ²ƒμœΌλ‘œ, prefix[i]λŠ” 인덱슀 iκΉŒμ§€(ν•΄λ‹Ή 인덱슀 포함)의 λͺ¨λ“  μš”μ†Œμ˜ 합이 λ˜λ„λ‘ κ΅¬μ„±ν•œλ‹€. 예λ₯Ό λ“€μ–΄, nums = [5, 2, 1, 6, 3, 8] 경우, prefix = [5, 7, 8, 14, 17, 25]λ₯Ό 얻을 수 있게 된...

[DSA] μŠ¬λΌμ΄λ”© μœˆλ„μš°

κ°œμš” 투 포인터 κΈ°λ²•μ²˜λŸΌ μŠ¬λΌμ΄λ”© μœˆλ„μš° 기법도 λ°°μ—΄μ΄λ‚˜ λ¬Έμžμ—΄μ— μ‚¬μš©ν•  수 μžˆλ‹€. 핡심은 μš”μ†Œλ“€μ΄ μˆœμ„œλŒ€λ‘œ μ •λ ¬λœ 반볡 κ°€λŠ₯ν•œ 객체에 μ‚¬μš©λœλ‹€λŠ” 것이닀. λ³Έ κΈ€μ—μ„œλŠ” μ„€λͺ…을 κ°„λ‹¨ν•˜κ²Œ ν•˜κΈ° μœ„ν•΄ λ°°μ—΄ μœ„μ£Όλ‘œ μ„€λͺ…ν•˜μ§€λ§Œ, λ¬Έμžμ—΄μ—μ„œμ˜ μ‚¬μš© 방식도 μ „ν˜€ λ‹€λ₯΄μ§€ μ•Šλ‹€λŠ” 것을 μ•Œμ•„λ‘μž. 배열을 λ‹€λ£¨λŠ” λ¬Έμ œμ—μ„œ μŠ¬λΌμ΄λ”© μœˆλ„μš°λŠ” ν”νžˆ μ‚¬μš©...

[DSA] 투 포인터

κ°œμš” 투 ν¬μΈν„°λŠ” λ°°μ—΄κ³Ό λ¬Έμžμ—΄ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 자주 μ‚¬μš©λ˜λŠ” 기법이닀. 이 방법은 반볡 κ°€λŠ₯ν•œ ꡬ쑰λ₯Ό 따라 μ΄λ™ν•˜λŠ” 두 개의 μ •μˆ˜ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 것을 ν¬ν•¨ν•œλ‹€. 이 κΈ€μ—μ„œλŠ” λ°°μ—΄κ³Ό λ¬Έμžμ—΄μ— μ΄ˆμ μ„ λ§žμΆ”κ³  μžˆλ‹€. μ—¬κΈ°μ—λŠ” i와 j λ˜λŠ” left와 right와 같은 두 μ •μˆ˜κ°€ 주둜 μ‚¬μš©λ˜λŠ”λ°, 이듀은 λ°°μ—΄ λ˜λŠ” λ¬Έμžμ—΄μ˜ 인덱슀λ₯Ό λ‚˜νƒ€...

[DSA] λ°°μ—΄κ³Ό λ¬Έμžμ—΄

κ°œμš” μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œμ™€ κ΄€λ ¨ν•˜μ—¬ λ°°μ—΄(1차원)κ³Ό λ¬Έμžμ—΄μ€ 맀우 μœ μ‚¬ν•˜λ‹€: λ‘˜ λ‹€ μš”μ†Œμ˜ μ •λ ¬λœ 그룹을 λ‚˜νƒ€λ‚Έλ‹€. λŒ€λΆ€λΆ„μ˜ μ•Œκ³ λ¦¬μ¦˜ λ¬Έμ œλŠ” μž…λ ₯의 μΌλΆ€λ‘œ λ°°μ—΄ λ˜λŠ” λ¬Έμžμ—΄μ΄ ν¬ν•¨λ˜λ―€λ‘œ, κΈ°λ³Έ 연산에 μ΅μˆ™ν•΄μ§€κ³  κ°€μž₯ 일반적인 νŒ¨ν„΄μ„ ν•™μŠ΅ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€. β€œλ°°μ—΄β€μ΄λΌλŠ” μš©μ–΄λŠ” 언어에 따라 λ‹€λ₯Έ 의미λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€. 예λ₯Ό λ“€μ–΄, νŒŒμ΄μ¬μ€ λ°°...

졜근 μ—…λ°μ΄νŠΈ