[Algorithm / 25.03.31] 프로그래머스 - 카펫
·
Algorithm
문제 설명Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다.Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다.Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 내 풀이import Foundationfunc solution(_ brown:Int, _ yellow:Int) -> [Int] { var allCases = [Int: Int]() var result =..
[TIL / 25.03.28] 과제 5, 스택뷰가 보이지 않는 문제 해결
·
iOS/Swift
1. 메인 트러블슈팅버튼이 출력되지 않던 문제, configure 이전에 setupUI를 해주어 count가 넘어가지 않고 0인채로 렌더링하고 끝나는 줄 알았는데, 그렇다고 데이터가 후에 바인딩 되던게 여기서는 안될 리가 없었다. //// BookSeriesView.swift// HarryPotterBooks//// Created by 송규섭 on 3/28/25.//import UIKitclass BookSeriesView: UIView { private var seriesCount: Int = 0 private let stackView = UIStackView().then { $0.axis = .horizontal $0.spacing = 8// ..
[TIL / 25.03.27] HarryPotterBooks 과제 2~4Lv 구현 및 회고
·
iOS/Swift
1. 구현한 것2. 보완했던 사항들기본 구현보단 부분 부분 고쳤던 사항들을 기록한다. 먼저, 에러 핸들링에 대해서 좀 더 alert창에 친근하게 접근할 수 있도록 구조를 바꿨다.기존 loadBooks는 Result 타입을 반환했는데, 해당 방식으로 콜백을 하기보단 해당 throw 메서드로 변환하면서 [Book]으로 명시적으로 반환하도록 바꿨음.class DataService { func loadBooks() throws -> [Book] { guard let path = Bundle.main.path(forResource: "data", ofType: "json") else { throw DataError.fileNotFound } ..
HarryPotterBooks 과제 1레벨 기록
·
iOS/Swift
1. 구현해야 할 것2. 문제 해결import Foundationimport UIKitstruct BookResponse: Decodable { let data: [Book]}struct Book: Decodable { let attributes: Attributes}struct Attributes: Decodable { let title: String let author: String let pages: Int let release_date: String let dedication: String let summary: String let wiki: String let chapters: [Title]}struct Title: Decodable { ..
[TIL / 25.03.24] UIKit No Storyboard 초기 세팅
·
iOS/Swift
스토리보드 없이 코드 베이스로 UI를 구현하게 된다면 어떻게 세팅할지 알아보자 ! 1. main.storyboard 삭제move to trash 해줘야함 ! 2. 프로젝트 설정 - Build Settings - main 검색하면 나오는 UIKit Main storyboard File Base Name 백스페이스로 제거 3. 파일 중 Info.plist에서 해당 항목도 백스페이스로 제거 4. SceneDelegate 내에 코드 수정func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { guard let windowScene = (..
[TIL / 25.03.20] 최적화(OptimizationTips) 2
·
iOS/Swift
1. Swift 컨테이너 타입을 효율적으로 사용하는 방법Array에서 값 타입 사용하기Swift에서 타입은 두 가지 카테고리로 나눌 수 있습니다. 값 타입과 참조 타입.값 타입은 struct, enum, tuple이 있고, 참조 타입은 class가 있는데, 값 타입의 경우 NSArray 내부에 포함될 수 없습니다.여기서 NSArray가 무엇인가? NSArray는 Objective-C에서 사용되는 불변(Immutable) 배열 클래스라고 합니다. 스위프트에선 옵젝씨와의 브릿징을 통해 사용할 수 있다고 합니다. 오직 객체(참조 타입)만 저장 가능합니다. Swift의 Array는 내부적으로 때로는 Objective-C의 NSArray와 호환되어야 한다고 합니다. 다만, 값 타입은 NSArray에 넣을 수 없는..
[Algorithm / 25.03.20] 카드 뭉치
·
Algorithm
1. 문제 설명코니는 영어 단어가 적힌 카드 뭉치 두 개를 선물로 받았습니다. 코니는 다음과 같은 규칙으로 카드에 적힌 단어들을 사용해 원하는 순서의 단어 배열을 만들 수 있는지 알고 싶습니다.원하는 카드 뭉치에서 카드를 순서대로 한 장씩 사용합니다.한 번 사용한 카드는 다시 사용할 수 없습니다.카드를 사용하지 않고 다음 카드로 넘어갈 수 없습니다.기존에 주어진 카드 뭉치의 단어 순서는 바꿀 수 없습니다.예를 들어 첫 번째 카드 뭉치에 순서대로 ["i", "drink", "water"], 두 번째 카드 뭉치에 순서대로 ["want", "to"]가 적혀있을 때 ["i", "want", "to", "drink", "water"] 순서의 단어 배열을 만들려고 한다면 첫 번째 카드 뭉치에서 "i"를 사용한 후 ..
[TIL / 25.03.19] playground, command line tool에서의 비동기 함수 (feat. escaping closure)
·
iOS/Swift
1. 오늘 무엇을 했으며 문제가 무엇인가,,,,,,오전부터 낮까지 알고리즘 문제 하나 붙잡고 있었다가 남는 시간에 무언가 몰두해서 하기 힘들어서 밀린 강의를 좀 들어두도록 했다.문제가 생긴 부분은 심화 단계에서의 클로저 실습. escaping closure(탈출 클로저)에 대한 실습인데 실행에 자꾸 문제가 있었다. 우선 탈출 클로저란 무엇인가?"탈출 클로저(@escaping)는 함수가 반환된 후에도 실행될 수 있는 클로저입니다. 즉, 클로저가 함수의 실행 범위(scope)를 '탈출'하여 함수 외부에서도 호출될 수 있습니다. 반면, 일반 클로저(비탈출 클로저)는 함수 내부에서만 실행되며 함수가 반환되기 전에 실행을 완료해야 합니다." 원래 클로저를 쓸 때 선언 시 함수 블럭 내에 쓰는데 만약 이 클로저가 ..
[TIL / 25.03.18] 최적화(OptimizationTips) 1
·
iOS/Swift
Private, public 의 쓰임새에 대해서 좀 더 고민하다가 같이 고민하던 분들과 같이 튜터님께 갔는데 최적화 관련 정보가 있는 링크를 받아 해석해보기로 했읍니다,,,,,  1. Whole Module Optimizations (WMO)기본적으로 Swift는 각 파일을 개별적으로 컴파일한다고 합니다. 이를 통해 Xcode는 여러 파일을 매우 빠르게 병렬로 컴파일할 수 있는데, 단 각 파일을 개별적으로 컴파일하게 되면 특정 컴파일러 최적화를 방지할 수 있다고 합니다. (일부 최적화를 하는 데에 방해가 된다는 느낌인듯?) 이때 파일 단위로 컴파일하지 않고 모든 파일을 하나의 단위로 컴파일하는게 WMO라고 합니다.단, 컴파일 시간이 기본모드보다 느린 점이 있지만 그만큼 최적화에 장점이 있는데 이 최적화도..
[Algorithm / 25.03.18] 추억 점수
·
Algorithm
1. 문제 설명사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물의 이름이 ["kali", "mari", "don", "tony"]이고 ["kali", "mari", "don"]의 그리움 점수가 각각 [11점, 1점, 55점]]이고, "tony"는 그리움 점수가 없을 때, 이 사진의 추억 점수는 3명의 그리움 점수를 합한 67(11 + 1 + 55)점입니다. 그리워하는 사람..