본문 바로가기

전체 글

[iOS] JSON (JavaScript Object Notation) 2024년 4월 9일 화요일 왠지 무조건 잘 알아두어야 할 것 같은 제이슨.. (윌슨 친구 제이슨.. ?) 내 귀에 자꾸만 들려오는 이 녀석을 훓어봅니다. Json 한 줄 표현 원래 자바스크립트 언어에서 객체 속성을 표현하기 위한 방법으로 사용하기 시작한 데이터 구조 간결하고 쉽게 데이터를 나타내는 방법 중 하나 "Key" : Value 로 이루어진 데이터들의 집합 (--> Json 객체) Swift의 Dictionary 성격을 가지고 있기에 Dictionary 계열의 자료형을 사용한다. Dictionary는 배열과는 다르게 index 없이 key에 해당하는 value를 매칭하면 된다. 따라서 순서는 상관이 없다. 그러나 key 타입은 무조건 문자열(string)만 가능하고, value 타입은 문자열, .. 더보기
[Algorithm] 콜라 문제 (w/ Swift) 콜라 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr func solution(_ a:Int, _ b:Int, _ n:Int) -> Int { //a개를 가져다 주면 b병을 준다. n개 가져다주면 몇병을 받을 수 있나 //현재 병 수 = n개 var cokeNumber = n var receivedCokeNumber = 0 // a보다 가지고 있는 콜라의 수가 크거나 같을 때까지 반복 while cokeNumber >= a { receivedCokeNumber += cokeNumber / a * b cokeNumber = (cokeNumber / a .. 더보기
[iOS] 키오스크 상단 카테고리 영역 만들기 2024년 4월 8일 월요일 지난 주 만들었던 키오스크 화면 상단 카테고리 영역에 대해 기록 겸 정리합니다. 내가 구현한 키오스크 사용자가 제품을 선택하는 과정은 크게 아래의 두 단계로 나눌 수 있다: 1) 최상단의 카테고리 선택과 2) 그에 따른 제품군 선택 (제품군을 클릭하면 아래에 제품 이미지와 가격 정보가 펼쳐진다.) 최상단은 Button + Label로, 그 밑의 제품군은 Label로 만들었는데 stack으로 만들거나 아예 처음부터 코드로 짜는 편이 낫다는 조언들도 주셔서(이어지는 뒤의 작업들을 고려할 때) 초기 진행부터 선택의 어려움이 있었지만, 한 개의 ViewController에서 나를 포함한 세 명이 함께 코드를 짜고 있었기에 코드의 conflict를 최소화하기 위해 storyboard를.. 더보기
[Algorithm] 부족한 금액 계산하기 (w/ Swift) 부족한 금액 계산하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 총 이용한 금액을 구해주고, 가지고 있는 금액보다 총 이용한 금액이 큰 경우 그 차액을 반환하고 그 외의 경우에는 0을 반환해 주면 된다. func solution(_ price:Int, _ money:Int, _ count:Int) -> Int64{ var answer:Int64 = -1 var sum = 0 // 놀이기구를 탄 횟수만큼 반복하면서 금액을 더해준다 (내야하는 총 금액 : sum) for ride in 1...count { sum += ride * price } // su.. 더보기
[Algorithm] 내 마음대로 정렬하기 (w/ Swift) 내 마음대로 정렬하기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr '인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다.' 라는 문제 핵심을 잘 이해해야만 풀 수 있는 문제다. 은근히 문제 자체를 이해하기가 어렵다.. #1. 문자열 배열을 문자 단위로 분리하고 다시 배열로 변환: var strings = strings.map { $0.map { String($0) } } 우선, 입력으로 받은 문자열 배열 strings의 각문자열을문자단위로분리한다. 내부의 .map { String($0) }은 각 문자를 다시 문자.. 더보기
[iOS] MVC (Model-View-Controller) 2024년 4월 5일 금요일 이번 주 팀 프로젝트를 진행하기 앞서 Xcode IDE에서 M,V,C 폴더를 각각 만들어 파일을 분리하는 작업을 했는데 MVC 패턴이라 불리는 이 구조화 된(설계) 패턴이 무엇인지 정리해 봅니다. MVC 패턴은 Model-View-Controller 패턴의 줄임말으로, 세 가지 계층에서 각 코드의 책임과 역할을 나눈다. Model 데이터와 관련된 내용을 담고 있으며, 데이터를 관리하는 로직도 포함하고 있다. 네트워크를 통해 받아온 DTO 구조체와 네트워크에 접근하는 로직, 파일로 따로 저장해야하는 Persistance한 데이터를 로드한다든가, 아니면 필요한 구조체를 만드는 경우 해당 내용들은 모두 Model에 포함된다. Model은 UI와 직접적으로 연결되지 않는다. 불가능한.. 더보기
[Swift] Closure 매개변수에 사용된 와일드카드 패턴 2024년 4월 3일 수요일 (영원한 아기판다가 떠난 푸중절.. 늘 건강해야해 푸곰쥬..) 평소 의식하지 못한 채 사용하는 많은 패턴들 중 와일드카드 패턴을 closure 사례를 통해 복습하며 익혀 봅니다. ※ 와일드카드 패턴은 유닉스 시스템의 초기(1971년)부터 사용되어 온 오래된 개념으로, 다양한 프로그래밍 및 검색 작업에서 유용하게 사용되고 있다. 패턴의 종류 값을 해체(추출)하거나 무시하는 패턴 - 와일드카드 패턴, 식별자 패턴, 바인딩 패턴, 튜플 패턴 ... 패턴 매칭을 위한 패턴 - 열거형 케이스 패턴, 옵셔널 패턴, 표현 패턴, 타입캐스팅 패턴 ... Swift 언어에서의 와일드카드 패턴 "와일드카드 식별자가 위치한 곳의 값은 무시한다. " 밑줄( _ )로 표현되며, 코드 내에서 특정 값.. 더보기
[iOS] ViewController - Lifecycle Method 2024년 4월 2일 화요일 ViewController의 생명주기(Lifecycle)는 앱의 UI와 상호작용을 관리하는 데 중요한 역할을 합니다. ViewController가 생성되고 화면에 나타나는 순간부터 사라질 때까지의 일련의 이벤트로 구성되는 Lifecycle 과정에서 여러 메서드가 호출되며, 개발자는 이 메서드들을 오버라이드하여 특정 작업을 수행할 수 있습니다. 3월 22일 내용과 일부 중복되는 부분이지만, ViewController를 제대로 이해하기 위한 핵심 내용이기에 쉽게 풀어 다시 한 번 정리해 봅니다. init: ViewController의 인스턴스가 생성될 때 호출 loadView: ViewController가 관리하는 뷰가 로드될 때 호출. 뷰의 로딩을 시작하는 단계 viewDidL.. 더보기