분류 전체보기
-
메모리 누수(Memory leak)란 ? retain cycle로 인해 메모리에서 객체를 할당 해제할 수 없는 경우에 발생한다. Swift는 ARC를 통해 메모리 관리를 하는데, 두 객체 이상이 서로에 대해 강한 참조를 하는 경우에 retain cycle이 발생한다. 결과적으로 참조 카운팅이 0이 되지 않아 deinit이 호출되지 않는다. 이를 방지하기 위해서 객체간에 상호참조하는 경우 weak, unowned 키워드를 통해 약한참조를 사용해야한다. (자세한 내용은 ARC에 대해 알아보면 된다.) class A{ var b: B? } class B{ var a: A? } func makeMemoryLeaks(){ let a = A() let b = B() a.b = b b.a = a } 간단히 예를 들면..
(iOS) 메모리 이슈 디버깅, 메모리 그래프 Xcode instrument, 메모리 누수메모리 누수(Memory leak)란 ? retain cycle로 인해 메모리에서 객체를 할당 해제할 수 없는 경우에 발생한다. Swift는 ARC를 통해 메모리 관리를 하는데, 두 객체 이상이 서로에 대해 강한 참조를 하는 경우에 retain cycle이 발생한다. 결과적으로 참조 카운팅이 0이 되지 않아 deinit이 호출되지 않는다. 이를 방지하기 위해서 객체간에 상호참조하는 경우 weak, unowned 키워드를 통해 약한참조를 사용해야한다. (자세한 내용은 ARC에 대해 알아보면 된다.) class A{ var b: B? } class B{ var a: A? } func makeMemoryLeaks(){ let a = A() let b = B() a.b = b b.a = a } 간단히 예를 들면..
2022.03.11 -
문제링크 https://programmers.co.kr/learn/courses/30/lessons/43162# 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 풀이 1. 0번 컴퓨터부터 연결된 모든 컴퓨터를 방문한다. (재 방문 하지 않기 위해 g_check이라는 배열에 방문체크를 한다.) -> 연결된 모든 컴퓨터를 방문하고 나면 answer += 1을 해준다. (연결 컴퓨터를 모두 방문하면 네트워크 한덩어리 발견!) 2. 방문체크는 DFS를 이용하여 재귀적으로 구현했다. g_check = [] g_c..
[프로그래머스] (Python) - 네트워크문제링크 https://programmers.co.kr/learn/courses/30/lessons/43162# 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 풀이 1. 0번 컴퓨터부터 연결된 모든 컴퓨터를 방문한다. (재 방문 하지 않기 위해 g_check이라는 배열에 방문체크를 한다.) -> 연결된 모든 컴퓨터를 방문하고 나면 answer += 1을 해준다. (연결 컴퓨터를 모두 방문하면 네트워크 한덩어리 발견!) 2. 방문체크는 DFS를 이용하여 재귀적으로 구현했다. g_check = [] g_c..
2022.03.11 -
https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 문제 유형 : DFS / BFS 풀이 dfs(idx, 누적값): if idx == numbers의 개수 # 재귀 종료조건 : 모든 요소를 더하거나 뺐다면 종료 if 누적값 == target: # 모든요소를 더하거나 뺐는데, 누적값이 target과 일치하면 answer += 1 answer += 1 return # 아직 종료전이라면 dfs(..
[프로그래머스] (Python) - 타겟 넘버https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 문제 유형 : DFS / BFS 풀이 dfs(idx, 누적값): if idx == numbers의 개수 # 재귀 종료조건 : 모든 요소를 더하거나 뺐다면 종료 if 누적값 == target: # 모든요소를 더하거나 뺐는데, 누적값이 target과 일치하면 answer += 1 answer += 1 return # 아직 종료전이라면 dfs(..
2022.03.11 -
https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 풀이 별다른 풀이 방법 없이 문제를 그대로 구현하면 된다. # 한번에 한 유저 신고 가능, 한 유저를 여러번 신고시 1번으로 간주 # K번 이상 신고되면 정지 # 신고한 사람에게 처리결과를 메일로 받는다. 3개의 메서드를 구현해서 풀었다. 코딩 테스트를 볼때 함수를 나누는게 좋을지 아닐지 모르겠다.... # 0. (사전처리) 같은 신고를 한 경우도 있으므..
[프로그래머스] (Python) - 신고 결과 받기https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 풀이 별다른 풀이 방법 없이 문제를 그대로 구현하면 된다. # 한번에 한 유저 신고 가능, 한 유저를 여러번 신고시 1번으로 간주 # K번 이상 신고되면 정지 # 신고한 사람에게 처리결과를 메일로 받는다. 3개의 메서드를 구현해서 풀었다. 코딩 테스트를 볼때 함수를 나누는게 좋을지 아닐지 모르겠다.... # 0. (사전처리) 같은 신고를 한 경우도 있으므..
2022.03.09 -
스위프트에서 함수의 종류 스위프트에서 함수는 크게 두가지로 나눈다. 인스턴스 메서드와 타입 메서드이다. 그리고 타입 메서드는 다시 static method, class method로 나뉜다. Instance Method Type Method Static Method Class Method class ExampleClass{ func instanceMethod(){} // 인스턴스 메서드 class func classMethod(){} // 클래스 메서드 (타입 메서드) static func staticMethod(){} // 스태틱 메서드 (타입 메서드) } 모양을 보니 별다른 키워드 없이 일반적으로 사용하던것을 인스턴스 메서드라고 한다. 그리고 class 또는 static 키워드를 통해 정의된 함수를 ..
(Swift) 인스턴스 메서드 , 타입 메서드 (instance method, type method)스위프트에서 함수의 종류 스위프트에서 함수는 크게 두가지로 나눈다. 인스턴스 메서드와 타입 메서드이다. 그리고 타입 메서드는 다시 static method, class method로 나뉜다. Instance Method Type Method Static Method Class Method class ExampleClass{ func instanceMethod(){} // 인스턴스 메서드 class func classMethod(){} // 클래스 메서드 (타입 메서드) static func staticMethod(){} // 스태틱 메서드 (타입 메서드) } 모양을 보니 별다른 키워드 없이 일반적으로 사용하던것을 인스턴스 메서드라고 한다. 그리고 class 또는 static 키워드를 통해 정의된 함수를 ..
2022.03.08 -
접근 제어자란? 코드끼리 상호작용을 할 때 소스파일 간, 모듈 간 접근을 제한할 수 있는 기능이다. 이를 통해 특정 코드의 세부적인 구현은 숨기고, 허용된 기능만 사용하는 인터페이스를 제공할 수 있다. 🎯 모듈: 배포할 코드의 묶음 단위 (ex: 하나의 프레임워크, 라이브러리, 애플리케이션) , 쉽게말하면 `import` 를 통해 불러오는것들 🎯 소스파일: Swift 코드 파일 한개를 의미한다. 보통 파일 하나에 하나의 타입만 정의하지만, 여러개를 정의하는 경우도 있다. 그럼 왜 파일 간, 모듈 간 접근을 제한하나? OOP 패러다임의 “은닉화"와 관련이 깊다. 외부에서 보거나 접근하면 안되는 코드를 막기 위함이다. 🎯 은닉화: 객체 외부에서 객체 내의 자료로의 접근을 제한하고, 데이터를 수정하거나 조작하..
(Swift) 접근 제어자 (Access Control, Access Level)접근 제어자란? 코드끼리 상호작용을 할 때 소스파일 간, 모듈 간 접근을 제한할 수 있는 기능이다. 이를 통해 특정 코드의 세부적인 구현은 숨기고, 허용된 기능만 사용하는 인터페이스를 제공할 수 있다. 🎯 모듈: 배포할 코드의 묶음 단위 (ex: 하나의 프레임워크, 라이브러리, 애플리케이션) , 쉽게말하면 `import` 를 통해 불러오는것들 🎯 소스파일: Swift 코드 파일 한개를 의미한다. 보통 파일 하나에 하나의 타입만 정의하지만, 여러개를 정의하는 경우도 있다. 그럼 왜 파일 간, 모듈 간 접근을 제한하나? OOP 패러다임의 “은닉화"와 관련이 깊다. 외부에서 보거나 접근하면 안되는 코드를 막기 위함이다. 🎯 은닉화: 객체 외부에서 객체 내의 자료로의 접근을 제한하고, 데이터를 수정하거나 조작하..
2022.03.05