분류 전체보기
-
해시 테이블 : 빠르게 데이터 검색하기CS💻/DS & Algorithm 2025. 3. 5. 21:01
자료구조 세번 째 주인공은 해시 테이블 입니다. ~~ 지난 시간에는 '링크드 리스트'에 대해서 알아보았지요. 링크드 리스트 : 메모리 알뜰하게 사용하기빙글빙글 돌아가는 짱구의 하루~~ 자료구조 시리즈 두 번째는 바로 '링크드 리스트'입니다. 지난 시간에는 '동적 배열'에 대해서 알아보았습니다. 동적 배열은 '콜 스택 구조상 컴파일 전에people-analysis.tistory.com동적 배열을 사용하기 위해서는 '연속된 메모리 블록'이 필요하다는 제약'을 링크드 리스트는 각 노드가 다음 노드를 가리키는 포인터를 사용함으로써 해결했어요. 그렇다면 오늘 주인공 '해시 테이블'은 뭐 때문에 필요하게 되었는지 살펴봅시다. 레츠 기딧 ~~~ 배열과 링크드 리스트의 한계배열과 링크드 리스트는 각각의 장점을 ..
-
링크드 리스트 : 메모리 알뜰하게 사용하기CS💻/DS & Algorithm 2025. 3. 4. 22:50
빙글빙글 돌아가는 짱구의 하루~~ 자료구조 시리즈 두 번째는 바로 '링크드 리스트'입니다. 지난 시간에는 '동적 배열'에 대해서 알아보았습니다. 동적 배열은 '콜 스택 구조상 컴파일 전에 메모리 양이 정해져야 하는 한계'를 힙을 사용해 런타임에 메모리를 결정할 수 있게 해 줌으로써 해결해 줬지요?덕분에 우리는 사용자의 입력, 입,출력되는 파일 등 프로그램이 실행될 때 결정되는 것들을 유연하게 저장할 수 있게 되었어요. 동적 배열: 스택의 한계를 넘어서자료구조, 알고리즘 중요하다고들 하지만아직까지 앱을 구현할 때 해당 개념들이 엄청나게 도움이 된 적이 없다 보니 필요성을 못 느꼈는데요. ( 기업들에서 코딩 테스트를 요구하니 공부를people-analysis.tistory.com 그렇다면 링크드 리..
-
랜덤은 무지의 결과다.Math♾️/Probability Statistics🎲 2025. 3. 2. 17:27
확률이란 무엇인가?가장 기본적인 정의로, 확률은 특정 사건이 발생할 가능성을 계산하는 방법입니다. 수학적으로 표현하면확률(A) = 사건 A가 발생할 수 있는 방법의 수 / 발생 가능한 전체 경우의 수이 간단한 공식이 확률 이론의 기초가 됩니다.동전 던지기 예제가장 간단한 예제로 동전 던지기를 살펴봅시다. 공정한 동전을 두 번 던진다고 가정해 봅시다.이 경우 가능한 모든 결과의 집합(Ω)은앞면, 앞면 (H, H)앞면, 뒷면 (H, T)뒷면, 앞면 (T, H)뒷면, 뒷면 (T, T)총 4가지 경우가 가능합니다.문제 1: 적어도 한 번 앞면이 나올 확률은?사건 A를 "적어도 하나의 동전이 앞면"이라고 정의하면이 사건이 발생하는 경우: (H,H), (H,T), (T,H)발생 가능한 방법의 수: 3전체 경우의 수..
-
Xcode가 저장 공간 다 잡아 먹는다.Apple🍎 2025. 3. 1. 20:17
혹시 그런 경험하신 적 없나요?? 이상하게 저장공간이 모자라는?아니 진짜 뭐 한 것도 없는데 도대체 내 소중한 저장공간을 누가 잡아먹었을 까요?범인은 바로 Xcode 이 녀석입니다!!!!!이 자식이 뭐 하느라 그렇게 저장 공간을 많이 잡아먹는지 파해쳐 봅시다. 개발자 항목의 오른쪽에 있는 인포 버튼을 누르면 다음과 같은 창이 뜨는데요. 여기서 각 항목을 선택해서 삭제할 수 있어요. 삭제하기 전에 각 데이터가 뭐 하는지는 알아야겠죠?Xcode 캐시Xcode 캐시는 이전 빌드 정보를 저장하여 재빌드 시간을 단축시키는 역할을 합니다. 컴파일된 헤더 파일(PCH)모듈 캐시중간 빌드 결과물시스템 프레임워크 캐시프로젝트 빌드 데이터 및 인덱스빌드 데이터: 컴파일된 오브젝트 파일(.o), 중간 생성 코드, 리소스..
-
Swift의 컬렉션 타입 : 값 의미론과 실제 구현Apple🍎/Swift 2025. 2. 28. 20:18
Swift 컬렉션 타입의 완전한 이해기본 컬렉션 타입Swift는 세 가지 주요 컬렉션 타입을 제공합니다:배열(Array): 순서가 있고, 인덱스로 접근 가능한 요소들의 컬렉션딕셔너리(Dictionary): 키-값 쌍으로 이루어진 컬렉션세트(Set): 순서가 없고 중복을 허용하지 않는 컬렉션값 타입으로서의 컬렉션과 메모리 관리복사 시맨틱(Copy Semantics)란? : 컬렉션을 변수에 할당하거나 함수에 전달할 때 개념적으로는 '복사'가 일어납니다. 즉, 원본과 복사본은 서로 독립적인 별개의 인스턴스가 됩니다. 만약 배열이 참조 타입이었다면, copy를 변경했을 때 original도 함께 변경되었을 것입니다.var original = [1, 2, 3]var copy = original // 값 복사c..
-
동적 배열: 스택의 한계를 넘어서CS💻/DS & Algorithm 2025. 2. 27. 19:34
자료구조, 알고리즘 중요하다고들 하지만아직까지 앱을 구현할 때 해당 개념들이 엄청나게 도움이 된 적이 없다 보니 필요성을 못 느꼈는데요. ( 기업들에서 코딩 테스트를 요구하니 공부를 하긴 해야 하는데...... )실질적인 필요를 못 느끼니 어지간히 하기 싫더군요. 그래도 하긴 해야 하니까. ( 굶어 죽지 않으려면 ) 이왕이면 좀 더 쓸모있고 재미있게 정리를 해보려고 합니다. 가봅시다. 레츠기릿동적 배열이 뭐고, 어떻게 쓰고를 알기 전에 이놈이 '왜' 필요하게 되었는지를 먼저 알아야하지 않을까요?등장 배경 : 스택의 한계우리가 작성한 프로그램이 실행되기 위해서는 운영체제로부터 메모리를 할당받은 뒤 목적에 따라 메모리 영역을 구분하여 앱을 실행하는 데 필요한 데이터들을 다루는데 사용합니다. 프로세스는 ..
-
클로저 종결판 2Apple🍎/Swift 2025. 2. 26. 16:31
죽지도 않고 다시 돌아온 클로저 종결판 아직 못 보신 분은 종결판 1부터 보시고 오세요. 츄라이~ 클로저 종결판앱을 개발할 때 꼭 마주치게 되는 '클로저'라는 놈, 이 정도 봤으면 정들 때도 되었는데이놈이 모양도 야시꾸리하고 형태도 왔다 갔다 해서 뭔가 찝찝한 녀석입니다. 그래서 오늘날 잡고 산산조people-analysis.tistory.com아직 좀 남은 거 마저 해치워 버립시다. 레츠기딧~~ Swift에서 클로저의 생명주기와 메모리 관리를 이해하기 위해서는 이스케이핑(Escaping)과 논이스케이핑(Non-escaping)에 대한 이해가 필요한데요. 같이 한번 차근차근히 알아볼까요? 일단 저번 시간에 배운 클로저는 "생성 시점에 환경을 캡쳐(기억)하기 위해 만들어진 녀석"을머리에 붙들어 메두시고여...