본문 바로가기
TIL

241115 TIL | 최소직사각형 swift, ARC | 알고리즘 공부 효율 찾기

by 23g 2024. 11. 15.

0. 회고 및 개선점 📝

  • 느낀 점: 알고리즘 맨 땅에 헤딩하지 말고 (다른 언어로라도) 틀을 잡고 하는게 좋을 것 같다
  • 잘한 점 : 불금에 공부하는 나 제법 멋져요. 내일 이사인데 공부하는 나 제법 미쳤어요...
  • 개선 점 : 맨땅헤가 끈기열쩡일 수도 있지만 효율성이 떨어진다는 것을 잊지 말기...!!!
  • 앞으로 :
    • 알고리즘 문제 푸는 법 공부하기!
    • 진도나가는거 만큼 중요한거는 복습과 기록

1. 오늘 배운 내용 📘 (데일리 루틴)

swift 강의

오늘은 못했어유


1일 1커밋

📜 문제 설명

모든 명함을 넣을 수 있되 가장 넓이가 작은 지갑 크기 찾기

⌨️ 입출력 예

[[60, 50], [30, 70], [60, 30], [80, 40]] 4000

✏️ 나의 코드

import Foundation

func solution(_ sizes:[[Int]]) -> Int {
    var num = 0
    var max1 = 0
    var max2 = 0

    for i in 0..<sizes.count {
        var s = sizes[i]
        if s[0] <= s[1]{
            num = s[0]
            s[0] = s[1]
            s[1] = num
        }
        if s[0]>max1{
            max1 = s[0]
        }
        if s[1] > max2{
            max2 = s[1]
        }
    }
    return max1 * max2
}

아직,,, 많이 안해봤으니까

이렇게 무작정 해도 괜찮겠지요,,^_ㅜ

사실 처음에 이렇게 쉽게 푸는 방법을 생각 못하고

수 비교하고 배열 뒤집고 변수에 저장하고,, 난리침

📚 개선 코드

import Foundation

func solution(_ sizes:[[Int]]) -> Int {

    var maxNum = 0
    var minNum = 0

    for size in sizes{
        var width = max(size[0], size[1])
        var height = min(size[0], size[1])

        maxNum = max(maxNum, width)
        minNum = max(minNum, height)
    }
    return maxNum * minNum
}

X.X ,,,

명함을 지갑에 넣으려면 가장 큰 길이를 반영해야함!

그리고 그것을 간편하게 하기 위해선 모든 명함을 가로 or 세로가 더 긴 길이가 오게 정렬!


cs 공부

질문 : 7. 메모리 관리 기법 중 iOS에서 사용되는 방식과 그 특징에 대해 설명해주세요.


답변 :

더보기

 

iOS에서는 앱이 쓰는 메모리를 효율적으로 관리하기 위해 자동 참조 카운팅(ARC) 방식을 씀.

자동 참조 카운팅(ARC)은 어떻게 동작하나요?

자동 참조 카운팅(ARC):

  • 참조 카운트란, 객체가 몇 군데서 참조되는지를 세는 숫자임.
  • 객체를 생성하면 참조 카운트가 1이 되고, 여러 군데서 그 객체를 가리키면 카운트가 올라감.
  • 더 이상 그 객체를 가리키는 곳이 없어 참조 카운트가 0이 되면, ARC가 그 객체의 메모리를 자동으로 해제함.
  • 이 덕분에 개발자가 직접 메모리를 관리할 필요가 줄어듦.
  • 단, 순환 참조라는 문제가 있을 수 있음. 서로가 서로를 참조하는 구조가 생기면 ARC가 참조 카운트를 0으로 만들지 못해, 메모리가 계속 남아 있게 됨. 이를 방지하기 위해 약한 참조(weak)를 설정해 순환 참조를 끊어줌.

Garbage Collection과의 차이는 무엇인가요?

Garbage Collection(GC)와의 차이점:

  • Garbage Collection(GC)은 주로 자바에서 사용하는 방식으로, 일정한 주기로 필요 없어진 메모리를 한꺼번에 청소함.
  • 하지만 GC는 메모리를 청소하는 타이밍이 앱 성능에 영향을 줄 수 있어, 앱이 계속 부드럽게 작동하기 힘든 상황이 생김.
  • ARC는 객체가 필요 없게 되자마자 메모리를 바로 해제해 성능이 더 안정적이고 예측 가능함.

 

 

💬

엥 왤케 커졌지

카페 쫓겨나기 1초 전

내일 이사 화이팅~!