Algorithm

SEB_BE_40 | 021 | 데일리코딩, μž¬κ·€ν•¨μˆ˜

kexon 2022. 7. 21. 23:52

πŸ’™ 데일리 μ½”λ”©

🀍 transformFirstAndLast

  • κΉƒν—ˆλΈŒ 컀밋 μ™„λ£Œ

πŸ’› μž¬κ·€ν•¨μˆ˜

  • μž¬κ·€: μ›λž˜μ˜ 자기 자리둜 λ˜λŒμ•„κ°€κ±°λ‚˜ λ˜λŒμ•„μ˜΄
  • μž¬κ·€ν•¨μˆ˜: 자기 μžμ‹ μ„ ν˜ΈμΆœν•˜λŠ” ν•¨μˆ˜

🀍 μž¬κ·€ν•¨μˆ˜ μž₯/단점

μž₯점

  • μ½”λ“œ κ°„κ²°, μˆ˜μ • 용이
  • λ³€μˆ˜ μ—¬λŸ¬κ°œ μ‚¬μš©ν•  ν•„μš” μ—†μŒ

단점

  • 직관적인 μ½”λ“œμ˜ 흐름 νŒŒμ•…μ΄ 어렀움
  • λ°˜λ³΅λ¬Έλ³΄λ‹€ λ§Žμ€ λ©”λͺ¨λ¦¬ μ‚¬μš©
  • λ©”μ„œλ“œ 호좜 → μ’…λ£Œ 이후 볡귀λ₯Ό μœ„ν•œ μ»¨ν…μŠ€νŠΈ μŠ€μœ„μΉ­ λΉ„μš© λ°œμƒ

🀍 μž¬κ·€ν•¨μˆ˜ μ‚¬μš© 쑰건

  • 문제의 크기λ₯Ό 점점 μž‘μ€ λ‹¨μœ„λ‘œ λ‚˜λˆ” ⇒ νƒˆμΆœ
  • μž¬κ·€ 호좜이 μ’…λ£Œλ˜λŠ” μ‹œμ  쑴재
  • μ—°μ‚° 과정이 동일할 λ•Œ μ‚¬μš©

🀍 μž¬κ·€ μ‚¬μš©μ΄ λ°˜λ³΅λ¬Έλ³΄λ‹€ 적합할 λ•Œ

  • μ£Όμ–΄μ§„ 문제λ₯Ό λΉ„μŠ·ν•œ ꡬ쑰의 더 μž‘μ€ 문제둜 λ‚˜λˆŒ 수 μžˆμ„ λ•Œ
  • μ€‘μ²©λœ 반볡문이 λ§Žκ±°λ‚˜ 반볡문의 쀑첩 횟수λ₯Ό μ˜ˆμΈ‘ν•˜κΈ° μ–΄λ €μšΈ λ•Œ
  • λ³€μˆ˜ μ‚¬μš©μ„ 쀄이고 λ³€κ²½ κ°€λŠ₯ν•œ μƒνƒœλ₯Ό μ œκ±°ν•˜μ—¬ ν”„λ‘œκ·Έλž¨ 였λ₯˜κ°€ λ°œμƒν•  수 μžˆλŠ” κ°€λŠ₯성을 쀄일 λ•Œ

πŸ’š Practical - Recursive Function

🀍 TIL

더보기
  • μž¬κ·€ν•¨μˆ˜μ˜ μ‚¬μš©λ²•μ„ 읡힐 수 μžˆμ—ˆλ‹€. μž¬κ·€ν•¨μˆ˜μ—μ„œ 제일 μ€‘μš”ν•œ 것은 νƒˆμΆœμ΄μ—ˆλŠ”λ°, μž‘μ—…μ„ λ‚˜λˆŒ 수 μžˆλŠ” 제일 μž‘μ€ λ‹¨μœ„λ‘œ λ‚˜λˆ„μ–΄μ£ΌλŠ” κ±°λ‹€. κ·Έλ ‡κ²Œ μͺΌκ°€ 수 없을 λ•ŒκΉŒμ§€ μͺΌκ°œμ£Όκ³  문제λ₯Ό μͺΌκ°€ 수 μžˆμ„ 땐 λ‹¨μˆœν•œ 것을 ν•΄κ²°ν•΄μ£Όκ³  λ³΅μž‘ν•œ 것을 ν•΄κ²°ν•΄μ£Όλ©΄ λœλ‹€! 말이쉽지~ 아웃풋은 아쉽닀..🀣
  • ν™€μˆ˜μ§μˆ˜ ꡬ할 땐 i % 2 == 0 || i % 2 == 1 이 μžλ™νƒ‘μž¬μ˜€λŠ”λ° λ‚˜λ¨Έμ§€, λ‚˜λˆ—μ…ˆ μ—°μ‚°μžλ₯Ό μ œν•œν•˜λ‹ˆκΉŒ 뭐지?! μ‹Άμ—ˆμ§€λ§Œ -2λ₯Ό λΉΌλ©΄μ„œ 0μ΄λ‚˜ 1이 λ‚˜μ˜¬ λ•ŒκΉŒμ§€ λ°˜λ³΅ν•˜λ©΄ λœλ‹€! 계속 λ­”κ°€ 방법이 μžˆμ—ˆλŠ”λ°~~ κΉŒμ§€λ§Œ μƒκ°λ‚˜κ³  -2κ°€ 생각이 μ•ˆλ‚¬λŠ”λ° μ΄λ²ˆμ— ν™•μ‹€ν•˜κ²Œ μ•Œμ•„λ‘¬μ•Όκ² λ‹€.
  • μ½”λ“œκ°€ μ§§λ‹€κ³  무쑰건 쒋은 게 μ•„λ‹ˆλΌ 상황에 λ§žλŠ”, 직관적인 μ½”λ“œλ₯Ό 많이 고민해봐야겠닀고 μƒκ°ν–ˆλ‹€.
  • λ°°μ—΄ 볡사
    • μΈλ±μŠ€λŠ” 0λΆ€ν„°!
    • 값에 μ˜ν•œ λ³΅μ‚¬μ΄λ―€λ‘œ λ³΅μ‚¬λœ λ°°μ—΄μ—μ„œ 값을 바꿔도 원본 배열값은 μœ μ§€λ¨
Arrays.copyOfRange(볡사할 λ°°μ—΄, 볡사 μ‹œμž‘ 인덱슀, 볡사 끝 인덱슀)
  • 효율적인 λ°°μ—΄ 볡사
    • μ›ν•˜λŠ” λΆ€λΆ„λ§Œ 볡사할 수 있음 → 효율적
    • λΆˆν•„μš”ν•œ μΈμŠ€ν„΄μŠ€ 생성 λ°©μ§€ → λ©”λͺ¨λ¦¬ μžμ› λ‚­λΉ„ → 속도 ν–₯상
    System.arraycopy(arr, arrPos, dest, destPos, length);
    
    arr - 원본 λ°°μ—΄
    arrPos - 원본 λ°°μ—΄μ˜ 볡사 μ‹œμž‘ μœ„μΉ˜
    dest - 볡사할 λ°°μ—΄
    destPos - 볡사할 λ°°μ—΄μ˜ 볡사 μ‹œμž‘ μœ„μΉ˜
    length - 볡사할 μš”μ†Œ 개수

πŸ’œ μ˜€λŠ˜μ˜ 생각 쑰각λͺ¨μŒ

  • μ˜€λŠ˜λΆ€ν„° μ½”λ”©ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•œ μ•Œκ³ λ¦¬μ¦˜ μ„Έμ…˜μ΄ μ‹œμž‘λ˜μ—ˆλ‹€. μ§„ν–‰ν•˜μ‹œλŠ” μ—”μ§€λ‹ˆμ–΄λ‹˜ μ°¨λΆ„μ°¨λΆ„ν•˜λ‹ˆ 잘 μ•Œλ €μ£Όμ‹œλŠ” 것 κ°™λ‹€. 그리고 고양이 κ·€μ—½λ‹€.😻
  • λ°μΌλ¦¬μ½”λ”©μœΌλ‘œ μ—‰λš±ν•œ 문제λ₯Ό μ œμΆœν–ˆλ‹€. νšŒκ³ μ— 적은 1일 1μ»€λ°‹μ˜ μ‹œμž‘μ΄μ—ˆλŠ”λ° μ‹œμž‘λΆ€ν„°...!🀣 저녁이 λ˜μ–΄μ„œμ•Ό ν™•μΈν–ˆλŠ”λ°, μ €λ²ˆμ— 정말 재밌게 ν’€μ—ˆλ˜ μ»¬λ ‰μ…˜ 문제라 λ°˜κ°€μ› λ‹€. 생각보닀 μ‰½κ²Œ ν’€λ €μ„œ λ‹Ήν™©μŠ€λŸ¬μ› μ§€λ§Œ μ»€λ°‹κΉŒμ§€ ν•΄μ„œ λΏŒλ“―ν–ˆλ‹€.
  • μž¬κ·€ν•¨μˆ˜ μ˜ˆμ‹œ λ¬Έμ œμ—μ„œ 문제λ₯Ό μ™œ μ €λ ‡κ²Œ μͺΌκ°œλŠ”μ§€ 이해가 μ•ˆ λ˜λŠ”λ° μ–΄λ–»κ²Œ 문제λ₯Ό μ €λ ‡κ²Œ μͺΌκ°œλƒ... λ‚΄κ°€ μͺΌκ°œμ§€κ² λ„€ ν•˜λ‹€κ°€ λ„μ €νžˆ μ•ˆλ˜μ–΄ μ²œμ‚¬λ‹˜κ»˜ SOSλ₯Ό μ³€λ”λ‹ˆ μ•„μ£Ό μΉœμ ˆν•˜κ²Œ 예제λ₯Ό 같이 ν•΄λ³΄λ©΄μ„œ μ•Œλ €μ£Όμ…¨λ‹€!πŸ˜‡ μ„€λͺ…을 λ“£κ³  λ‹€μ‹œ μ°¨κ·Όμ°¨κ·Ό 이해λ₯Ό ν•΄λ΄€λŠ”λ° λ­”κ°€ μ‹œμ•Όκ°€ 트인 것 같은 기뢄이 λ“€μ—ˆλ‹€! 이 μ€ν˜œλ₯Ό μ–΄λ–»κ²Œ 갚죠..? πŸͺΆ
  • μž¬κ·€λŠ” λ©”λͺ¨λ¦¬ λ¦­κ³Ό λ•Œλ¬Έμ— μ‹€λ¬΄μ—μ„œ μ‹€μ œλ‘œ μ‚¬μš©ν•˜λŠ” κ²½μš°λŠ” μ—†λ‹€..κ³  ν•œλ‹€. κ·Έλž˜μ„œ μž¬κ·€λ₯Ό κ³΅λΆ€ν•˜λŠ”κ²Œ λ§žλŠ”κ±΄κ°€ μ˜μ‹¬μŠ€λŸ½μ§€λ§Œ, κ·ΈλŸΌμ—λ„ λ°°μš°λŠ” μ΄μœ λŠ” μ•Œκ³  μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 것과 λͺ¨λ₯΄κ³  μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” 것은 λ‹€λ₯΄κΈ° λ•Œλ¬Έμ΄λ‹€. 더 λ‚˜μ•„κ°€ 논리적인 사고λ₯Ό ν•˜κ³  μ½”λ“œμ˜ 흐름을 읽고 μ΄ν•΄ν•˜λŠ”λ° 도움이 λœλ‹€. λŠλ €λ„ κΎΈμ€€ν•˜κ²Œ λ λ•ŒκΉŒμ§€ ν•˜λ‹€λ³΄λ©΄ 또 μ΅μˆ™ν•΄μ§€κ² μ§€~πŸ€
  • μ•Œκ³ λ¦¬μ¦˜ 곡뢀 ν• κ±°λ‹€. ν™”μ΄νŒ…πŸ”₯