본문 바로가기
TIL

240808 데일리 포스팅 | 메모리 제약과 메모리 제한, 콜라츠 추측

by 23g 2024. 8. 8.

0. 

강의 듣고 진도 쫓아가느라 바쁜 요즘,,, 데일리 포스팅을 자꾸 놓치게 되네요!

선택과 집중!

1. 데일리 루틴  

  cs 질문 공부하기 

질문 : iOS 디바이스의 메모리 제약과 앱 메모리 제한에 대해 설명해주세요.

 

답변 : 

iOS 디바이스의 메모리 제약
물리적 메모리 한계: 디바이스별 RAM 용량 제한.
멀티태스킹: 여러 앱이 동시에 메모리를 사용.
시스템 리소스: 운영 체제와 시스템 서비스도 메모리를 차지.

앱 메모리 제한
메모리 경고: 과도한 메모리 사용 시 경고 발생.
메모리 제한 규칙: 앱마다 메모리 사용 한도 설정.
앱 종료: 메모리 사용이 한도를 넘으면 앱 강제 종료.

고려 사항 및 최적화
메모리 프로파일링: Xcode 도구로 메모리 사용 분석 및 최적화.
효율적인 메모리 관리: 필요 없는 객체 해제, 캐싱 활용.
메모리 누수 방지: 강한 참조 순환 방지, 약한 참조 사용.

1일 1커밋

📜 문제 설명

1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.

1-1. 입력된 수가 짝수라면 2로 나눕니다. 
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 

예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요.

제한 사항

  • 입력된 수, num은 1 이상 8,000,000 미만인 정수입니다.

⌨️ 입출력 예

✏️ 나의 코드

func solution(_ num:Int) -> Int {
    
    var n = num
    var count = 0
    
    for count =< 500{ // 이 자리에 count 넣으면 let이 돼서 아래에 count += 1이 불가, 굳이 선언할 필요도 없음
    	if n = 1{
    		return count
    	}else{
    		if count = 8{ // =는 대입, 비교 연산자는 ==
    			return -1
    		}else if n % 2 == 0{
    			n = n /2 // 연산자 앞뒤 공백 필요
    			count += 1
  	  		}else{
   		 		n = n * 3 + 1
    			count += 1
    		}    	
    	}
    	
    }
}

📚 개선 코드

func solution(_ num:Int) -> Int {
    
    var n = num
    var count = 0
    
    for _ in 0...500{
    	if n == 1{
    		return count
    	}else{
    		if count == 500{
    			return -1
    		}else if n % 2 == 0{
    			n = n / 2
    			count += 1
  	  		}else{
   		 		n = n * 3 + 1
    			count += 1
    		}    	
    	}
    }
    return 0
}

  swift 문법 강의 듣기

속성과 메서드 복습 했어요