목록Swift (18)
내가 iOS 개-발자라니.
iOS 개발자 관점에서 WWDC 25 핵심 내용을 정리했다.가장 중요한 것만 서술했고, 개발 영향도가 큰 순서대로 정리했다. 1) 새 디자인 언어: Liquid Glass• iOS 전체 UI 패러다임이 바뀜.• 투명 유리 + 깊이감 + 빛 반사 기반의 새로운 비주얼 스타일.• SwiftUI / UIKit 모두 Liquid Glass 스타일 지원 API 제공.• Icon Composer 등장 → 앱 아이콘과 에셋을 새 디자인 가이드에 맞게 쉽게 제작·미리보기.Impact:기존 앱 UI는 향후 1~2년 안에 Liquid Glass 스타일 적용이 요구될 가능성 높음.지금부터 UI 리뉴얼 준비 필요. 2) Apple Intelligence 공개 + Foundation Models Framework 제공가장 중요..
오늘은 딕셔너리 타입 해시 테이블에 대해서! 7. 해시 테이블과 해시 함수(Hash)해시함수: 입력(또는 키)을 받아 고정 크기의 문자 문자열을 생성하는 수학적 알고리즘으로, 이는 해시된 값을 나타낸다. 해시 함수의 주요 목표는 충돌을 최소화하기위해 사용 가능한 배열 위치에 키를 효율적으로 분산시키는 것이다.분할 메서드: 키를 해시 테이블의 크기(m)로 나누고 나머지를 해시 값으로 사용한다. 해시 테이블의 크기가 소수일 때 잘 작동한다. hashValue = key % m곱셈 메서드: 일정한 배수(A)를 키와 곱하고, 결과의 소수 부분을 해시 값으로 사용한다. 곱셈 메서드는 분할 메서드보다 키의 더 균일한 분포를 제공한다. hashValue = floor(m * (key * A % 1))폴딩 메서드: 키..
주말 잘 쉬고 그래프로 월요일을 시작합니다. 6. 그래프(Graph)그래프에 대하여코딩에서 그래프는 상호 연결된 노드의 집합을 나타내는 데이터구조이다. 노드는 정점(vertice)이라고도 하며 이들간의 관계를 정의하는 정적선(edge)로 연결될 수 있다.그래프의 종류무방향 그래프: 엣지(edge, 정적선)가 특정 방향을 가지지 않고 단순히 두개의 정점간에 연결을 나타낸다.방향 그래프: 엣지가 특정 방향을 가진다. 정점1이 정점2에 연결되어있다고 해서 반드시 정점2가 정점1에 연결되어 있다는 것을 의미하지 않는다. 방향그래프의 엣지는 종종 화살표로 표시된다.가중 그래프: 각 엣지에 가중치 또는 비용을 부여한다. 이러한 가중치는 거리, 용량 또는 비용과 같은 다양한 속성을 나타낼 수 있다. 예를 들어, 교통..
오늘은 트리~ 5. 트리(Tree)트리에 대하여트리는 파일 시스템, 계층적 데이터 및 검색 알고리즘과 같은 다양한 응용 프로그램에서 사용되는 기본 데이터 구조이다.트리는 간선으로 연결된 노드로 구성된 계층적 데이터 구조이다.트리의 각 노드는 0개 이상의 자식 노드를 가질 수 있다.트리의 노드는 루트에서 트리의 다른 모든 노드로 가는 경로가 있도록 구성된다.트리의 유형이진 트리: 각 노드가 최대 2개의 자식 노드를 가질 수 있는 트리의 일종으로, 일반적으로 왼쪽 자식과 오른쪽 자식으로 불린다. 단순성과 구현의 용이성을 가지고 있다.이진 탐색 트리(BST): 왼쪽 자식의 값이 부모 노드보다 작고, 오른쪽 자식의 값이 부모 노드보다 큰 이진 트리이다. 이 속성 덕분에 효율적인 검색, 삽입 및 삭제 작업이 가능..
오늘은 스위프트로 연결리스트를 만들어봤다. 4. 연결 리스트(Linked List)연결 리스트에 대하여노드: 연결리스트는 노드로 구성되며 각 노드는 아래에 2가지 구성 요소를 포함한다. 리스트에서 첫번째 노드는 헤드(head)라고 하고, 마지막 노드는 테일(tail)이라고 한다. 테일노드는 nil을 가리켜 리스트의 끝을 나타낸다. 노드의 구성 요소:데이터: 노드가 보유하는 값 또는 데이터다음(Next): 리스트에서 다음 노드에 대한 참조 또는 포인터연결 리스트 유형단일 연결 리스트: 각 노드가 리스트의 다음 노드에만 참조 eg. 노드1 → 노드2 → 노드3 → nil이중 연결 리스트: 각 노드는 다음 노드와 이전 노드 모두에 대한 참조 eg. 노드1 ↔ 노드2 ↔ 노드3 → nil원형 연결 리스트: 테..
오늘은 스택과 큐!솔직히 현업에서 많이 안썼지만 개념은 알아두면 좋다. 스위프트로 해보자,3. 스택과 큐스택(stack): LIFO(Last In First Out, 후입선출)// swift에서는 배열이나 연결 리스트를 이용하여 스택 구현함// 일단 배열을 이용하여 스택 구현(구조체를 이용)struct Stack { private var elements: [Element] = [] // 요소 추가 mutating func push(_ element: Element) { elements.append(element) } // 마지막에 추가된 요소를 빼고 나머지 반환(스택이 비어있을 경우 nil 반환) mutating func pop() -> Element? { return elements.popLast..
내용을 다시 생각하면서 현업에서 더 자주쓰이는 것만 사용해보는게 어떨까 생각해봤다.물론 내 기준 현업이다.2. 문자열문자열 생성// 기본 초기화let message = "Hello, world!"let numberString = String(42) //"42"let emptyMessage: String?let anotherEmptyMessage = String()// 이스케이프 시퀀스: '\\'를 앞에 포함해서 특수문자와 줄 바꿈 포함 let message = "\\"Hello, world!\\""문자열 조작let oneString = "One"let twoString = "Two"let jabString = "Jab, "// '+'연산자나 '+='연산자를 이용하여 문자열 수정let oneTwoStrin..
나는 스위프트를 잘 알고있는가?너무 기초이지만 정리한번 해볼까? 데이터구조와 알고리즘을 스위프터에 입장에서 정리한번 해보려 한다. 생각하며 적어가려니 목차는 모르겠다.일단 배열1. 배열(Array)배열 생성// 대괄호를 사용하여 기본 생성let fruits = ["apple", "banana", "orange"]// 초기자를 사용하여 생성let numbers = Array(repeating: 0, count: 5)배열 접근// 첫번째는 0의 인덱스를 가짐let fruits = ["apple", "banana", "orange"]let fristFruit = fruits[0] //"apple"let secondFruit = fruits[2] //"orange"배열 수정// 추가, 제거, 삽입, 반전var ..