본문 바로가기
TIL

240924 TIL | 메모리 사용량 최적화, 삼총사 swift

by 23g 2024. 9. 24.

0. TIL

잘한 점: 퇴 끝 공 ㅋㅋ

개선점 : 왜 맨날 스위프트 강의 안듣니

배운 점: 삼중 루프! 범위 설정!

1. 데일리 루틴  

  cs 공부

 

질문 :  iOS 앱의 메모리 사용량 최적화를 위한 방안과 고려 사항에 대해 설명해주세요.


iOS 앱의 메모리 최적화를 위해

  • ARC 관리와 순환 참조 방지
  • 이미지 최적화 및 지연 로딩(Lazy Loading) 사용
  • 데이터 구조 최적화
  • UITableView/UICollectionView의 셀 재사용
  • 메모리 경고 대응으로 불필요한 리소스 해제
  • 비동기 처리로 메모리 부담 줄이기
  • Instruments 도구로 메모리 누수와 사용량 분석

이런 방법들을 통해 앱의 메모리 사용을 효율적으로 관리할 수 있음


  1일 1커밋

📜 문제 설명

한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다.
한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요.

⌨️ 입출력 예

 

✏️ 나의 코드

// 틀린 오답 코드 ㅎ
import Foundation

func solution(_ number:[Int]) -> Int {
    var result = 0
    var num = 0
    
    for i in 0..<number.count{
        for j in 1..<number.count{ // 범위 설정 오류로 i, j 중복되는 오류 발생
            if i != j {
                num = number[i] + number[j]
                var otherNum = number.filter { $0 != number[i] && $0 != number[j] }
                //같은 숫자가 여러개 있는 경우 모두 제거되므로 정상적인 비교 불가
                for x in otherNum{
                    if num + x == 0{
                        result += 1
                    }else{
                        break
                        // 나머지 값들을 체크하지 못하고 다음 턴으로 넘어가게 됨
                    }
                }
                num = 0
            }
        }
    }
    return result
}

📚 개선 코드

import Foundation

func solution(_ number: [Int]) -> Int {
    var result = 0
    let n = number.count
    
    //삼중 포인터 사용
    for i in 0..<(n - 2) {
        for j in (i + 1)..<(n - 1) {
            for k in (j + 1)..<n {
                if number[i] + number[j] + number[k] == 0 {
                    result += 1
                }
            }
        }
    }
    return result
}

 

i, j, k 범위 설정하는 것은 아래 그림과 같음!

이해가 잘 안돼서 직접 그림,,, 형광펜으로 동그라미 친 부분은 i, j, k 선택에 따른 예시임


  swift 강의

강의명 : 오늘은 아직 못들었으요

 

난 그럼 청첩장 모임 가야해서 호다닥 ㅠㅠ~~~