swift
-
링크드 리스트 : 메모리 알뜰하게 사용하기CS💻/DS & Algorithm 2025. 3. 4. 22:50
빙글빙글 돌아가는 짱구의 하루~~ 자료구조 시리즈 두 번째는 바로 '링크드 리스트'입니다. 지난 시간에는 '동적 배열'에 대해서 알아보았습니다. 동적 배열은 '콜 스택 구조상 컴파일 전에 메모리 양이 정해져야 하는 한계'를 힙을 사용해 런타임에 메모리를 결정할 수 있게 해 줌으로써 해결해 줬지요?덕분에 우리는 사용자의 입력, 입,출력되는 파일 등 프로그램이 실행될 때 결정되는 것들을 유연하게 저장할 수 있게 되었어요. 동적 배열: 스택의 한계를 넘어서자료구조, 알고리즘 중요하다고들 하지만아직까지 앱을 구현할 때 해당 개념들이 엄청나게 도움이 된 적이 없다 보니 필요성을 못 느꼈는데요. ( 기업들에서 코딩 테스트를 요구하니 공부를people-analysis.tistory.com 그렇다면 링크드 리..
-
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
자료구조, 알고리즘 중요하다고들 하지만아직까지 앱을 구현할 때 해당 개념들이 엄청나게 도움이 된 적이 없다 보니 필요성을 못 느꼈는데요. ( 기업들에서 코딩 테스트를 요구하니 공부를 하긴 해야 하는데...... )실질적인 필요를 못 느끼니 어지간히 하기 싫더군요. 그래도 하긴 해야 하니까. ( 굶어 죽지 않으려면 ) 이왕이면 좀 더 쓸모있고 재미있게 정리를 해보려고 합니다. 가봅시다. 레츠기릿동적 배열이 뭐고, 어떻게 쓰고를 알기 전에 이놈이 '왜' 필요하게 되었는지를 먼저 알아야하지 않을까요?등장 배경 : 스택의 한계우리가 작성한 프로그램이 실행되기 위해서는 운영체제로부터 메모리를 할당받은 뒤 목적에 따라 메모리 영역을 구분하여 앱을 실행하는 데 필요한 데이터들을 다루는데 사용합니다. 프로세스는 ..
-
Swift를 위한 람다 계산법 핵심Apple🍎/Swift 2025. 2. 25. 12:23
람다 계산법이란?람다 계산법은 계산을 함수 형태로 표현하는 형식체계로, 단 세가지의 규칙만으로 모든 계산을 표현할 수 있습니다. 이것이 오늘날 Swift를 포함한 현대 프로그래밍 언어의 함수형 프로그래밍 패러다임의 이론적 기반이 되었습니다. 람다 계산법 세 가지 핵심 요소 1. 변수(Variables) : 가장 기본적인 요소로, 값을 참조하는 이름입니다. Swift에서는 상수나 변수와 같습니다.let x = 10var name = "Swift"2. 추상화(Abstraction) : 함수를 만드는 방법입니다. 람다 계산법에서는 λx.M 형태로 표현하며, "x를 입력으로 받아 M을 계산하는 함수"를 의미합니다.λx.x // 항등 함수 (입력을 그대로 반환)λx.(x + 1) // 입력에 1..
-
고차함수 for SwiftApple🍎/Swift 2025. 2. 25. 00:14
함수의 경우에는 값을 받아 일정한 연산을 수행한 뒤 다시 값을 반환합니다. 이에 비해 고차함수(Higher Order Functions)는 다음 특성 중 하나 이상을 가진 함수를 말합니다.하나 이상의 함수를 매개변수로 받는 함수함수를 결과로 반환하는 함수Swift의 컬렉션 타입(Array, Dictionary, Set 등)에는 여러 유용한 고차함수가 내장되어 있어 데이터 처리를 위한 선언적 프로그래밍 방식을 지원합니다.Swift 주요 고차 함수 map : 컬렉션의 각 요소를 변환하여 새로운 컬렉션을 생성합니다.// 기본 사용법let numbers = [1, 2, 3, 4, 5]let doubled = numbers.map { $0 * 2 }// 결과: [2, 4, 6, 8, 10]// 객체 배열에서 특..
-
클로저 종결판Apple🍎/Swift 2025. 2. 23. 21:58
앱을 개발할 때 꼭 마주치게 되는 '클로저'라는 놈, 이 정도 봤으면 정들 때도 되었는데이놈이 모양도 야시꾸리하고 형태도 왔다 갔다 해서 뭔가 찝찝한 녀석입니다. 그래서 오늘날 잡고 산산조각 내보려고 합니다. 가보시지요. 렛츠기딧 클로저는 보통 어떤 동작을 정의할 때 사용하는데요. 컴포넌트 재활용시 동작부만 따로 프로퍼티로 만든다던가 동작의 일부를 런타임 중에 결정한다던가 등... 근데 생각해보면 이미 동작을 나타낼 수 있는 것이 이미 존재합니다. 이름하여 함수 그쵸 함수를 이용하면 여러 가지 동작을 미리 정의하고 호출을 통해 코드의 여러 부분에서 활용할 수 있졍그럼 이미 있는데 뭐 한다고 클로저라는 것을 만들었을까요????전통적인 함수의 한계전통적인 프로그래밍에서 함수가 연산을 위해 사용 가능한 값..
-
Swift Student Challenge 프로젝트 후기Project/SoundScape 2025. 2. 22. 16:16
공간과 감각 혼자 작업할 때 허전한 기분이 들면 그 순간을 채워줄 BGM을 찾습니다. 유튜브를 살펴보면 다양한 플레이리스트들이 있는데, 특히 "카페에서", "해변에서", "공원에서"처럼 특정 장소를 키워드로 선정된 노래들을 들으면마치 그 장소에 와 있는 듯한 느낌이 들곤 합니다. 눈으로 보는 것이 많은 것들을 확정 짓지만, 느낌은 귀와 더 긴밀하게 연결되어 있는 듯합니다."분위기라는 단어가 주는 미묘한 느낌을 시각적으로 표현하면 어떨까?"라는 생각을 가지고 있었고, Swift Student Challenge에 참가하며 이 아이디어를 앱으로 구현해 보기로 했습니다. Sound + landscape프로젝트 이름은 Sound(소리)와 landscape(풍경)를 결합한 'Soundscape'로, '소리가 그리는..
-
일급객체가 뭔데?Apple🍎/Swift 2025. 2. 18. 23:03
프로그래밍을 하다 보면 '일급 객체'라는 단어를 접하곤 하는데요. 이 '일급'이라는 어감과 실제 설명하는 내용 사이에 간극이 있습니다. 그래서 오늘은 어원부터 출발해서 일급객체가 실질적으로 의미하는 것이 뭔지 알아보려고 합니다. 역사적 배경 옛날 옛적 영국에 '크리스토퍼 스트레이치'라는 아저씨가 살고 있었어요. 그 당시 영국에는 본토 출신과 식민지 출신 사이에 차별이 있었고 1등 시민, 2등 시민으로 나누어 법적, 사회적으로 권리를 제한했어요. 일등시민은 투표권, 재산권등의 모든 권리를 가진 사람들이었고, 이등시민은 제한된 권리만 가진 사람들이었지요. 우리 프로그래밍 언어 설계에 푹 빠져 있던 크리스토퍼 아저씨는 프로그래밍 언어에도 이와 같은 차별이 있다는 것을 발견했어요. // 숫자는 변수에 저장할 수..