본문 바로가기
TIL

240717 데일리포스팅 | 새 루틴 짜기!

by 23g 2024. 7. 17.

0. 

하이염

요즘에 앨런 swift 부트캠프를 들으면서

기존에 있던 데일리 루틴은 우선순위에 밀려 수행하지 못하고 있었어요

 

그래서! 부트캠프 내용 따라가면서 수행 가능한 루틴으로 바꾸기!

 

- cs 질문 답변하기

-> 가장 쉬우면서도 어려운 ㅎ 아직 하루에 몇개가 가능할지,,모르겠다

우선 해보면서 감 잡기!
- 1일 1커밋

-> 프로그래머스로 잔디 심을 예정

문법 강의 듣고 프로그래머스로 문제 푸니까

잔디도 심고 문법 복습도 하고 나름 코테 연습도 하고..?

1석 3조
- swift 강의 듣기

-> 하루에 3시간 분량(2배속, 1시간 반)을 들을까 생각 중인데

이론 강의 끝나고 실습으로 넘어와서 이 부분도 일단 해보기!

순공 시간 1시간 반 이렇게 설정할까 싶기도 함

- 컴구+운체 강의 1개

-> 이거는 swift 공부 하면서 병행하면 좋을 거 같아 일단 넣어놓음!

1. 데일리 루틴 ✅ ❌ 

cs 질문 답변하기 

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

답변 : 

iOS에서 사용되는 주요 메모리 관리 기법은 자동 참조 카운팅(ARC, Automatic Reference Counting)입니다.

ARC의 특징과 작동 방식은 다음과 같습니다:

  1. 자동 참조 카운팅(ARC):
    • 객체의 생명 주기를 관리하여 메모리 누수를 방지합니다.
    • 컴파일 타임에 코드에 삽입되어 런타임 성능에 영향을 주지 않습니다.
  2. 참조 카운트:
    • 객체에 대한 참조 횟수를 자동으로 증가시키거나 감소시킵니다.
    • 참조 횟수가 0이 되면 객체를 메모리에서 해제합니다.
  3. 참조 유형:
    • 강한 참조(Strong Reference): 기본 참조 방식으로, 참조 카운트를 증가시킵니다.
    • 약한 참조(Weak Reference): 참조 카운트를 증가시키지 않으며, 참조 대상이 해제되면 nil로 설정됩니다.
    • 비소유 참조(Unowned Reference): 참조 카운트를 증가시키지 않으며, 참조 대상이 해제되더라도 nil로 설정되지 않습니다. 참조 대상이 항상 존재한다고 가정할 때 사용합니다.
  4. 참조 순환 방지:
    • 약한 참조와 비소유 참조를 사용하여 참조 순환(Reference Cycle)을 방지합니다.
    • 참조 순환은 두 객체가 서로를 강하게 참조하여 해제되지 않는 상황을 말합니다.
  5. 메모리 관리 간소화:
    • ARC를 통해 개발자는 메모리 관리에 신경 쓰지 않고 코드 작성에 집중할 수 있습니다. 메모리 관리는 ARC가 자동으로 처리합니다.

이 내용 이해하는데 아주 도움이 되었던 블로그 첨부합니다

https://babbab2.tistory.com/26

1일 1커밋

📜 문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

⌨️ 입출력 예

✏️ 나의 코드

... 아직 딕셔너리 헷갈려서 못풀어서

노션에 나중에 복습 기록하고 ai의 도움으로,,,

📚 개선 코드

func solution(_ array: [Int]) -> Int {
    var countDict = [Int: Int]()
    
    // 각 숫자의 출현 횟수를 세기
    for num in array {
        countDict[num, default: 0] += 1
    }
    
    // 최대 출현 횟수 찾기
    let maxCount = countDict.values.max() ?? 0
    
    // 최대 출현 횟수를 가진 숫자들 찾기
    let mostFrequent = countDict.filter { $0.value == maxCount }.keys
    
    // 최빈값이 하나면 그 값을 반환, 여러 개면 -1 반환
    return mostFrequent.count == 1 ? mostFrequent.first! : -1
}