swift 168

[Swift] BOJ 12738 가장 긴 증가하는 부분 수열 3

BOJ 12738 가장 긴 증가하는 부분 수열 3 ✅ 풀었다. 일단 이 문제는 dp를 사용해서 풀려고 했었는데, 시간 초과로 다른 접근 방법이 필요했다. 2022.04.01 - [코딩테스트] - [Swift] BOJ 11053 가장 긴 증가하는 부분 수열 [Swift] BOJ 11053 가장 긴 증가하는 부분 수열 BOJ 11053 가장 긴 증가하는 부분 수열 ✅ dp라는데 진짜 어려웠다. 우선 알고리즘 풀이법이 이해가 가지 않았다. 주어진 값이 10 20 10 30 20 50 있다고 가정하자. list 10 20 10 30 20 50 dp 1 2 1 3 2 4.. rldd.tistory.com 위의 문제는 dp로 해결이 가능했었는데 아무튼 아이디어가 도통 떠오르지 않아서 다른 분들의 로직을 참고하였음...

[Swift] BOJ 1300 K번째 수

BOJ 1300 K번째 수 ✅ wow 생각보다 오래걸렸다. 문제보고 한 10초만에 해결하겠다 싶었는데 메모리 초과 ! 문제 조건을 보니까 10^9(10의 아홉제곱!) 까지 가능하다고 한다. 처음에는 그냥 배열을 N by N으로 만들어서 배열 인덱스 값의 곱을 배열 value로 저장하고 flatMap 이후에 sort해서 찾았다. 메모리 초과라니.. 나동빈 책 보니까 이진탐색을 정말 잘 구현하는 개발자는 10프로 정도밖에 안된다는데, 나도 90프로에 속하나보다 ㅎㅎ 이게 개념은 쉬운데, 문제 해결을 위해 적용하는게 어렵더라. ✅ 알고리즘 접근법. 이 문제는 알고리즘 접근법이 생각보다 어려웠다. 나동빈 책 이분탐색 부분을 보면 파라메트릭 서치라는 개념이 있는데, 그 개념을 사용해서 풀어야 했다. 이건 추후에 ..

[Swift] BOJ 1238 파티

BOJ 1238 파티 ✅ BOJ 1238 파티 스위프트는 다익스트라 알고리즘 풀려면 진짜 극악이다. 특히 효율성을 따져야한다면 힙을 구현해서 사용해야 하는데, 이거 진짜 너무나도 노가다 작업인듯. 다익 쓰면 쉽게 푸는데 이거 다익을 구현하는게 결국은 관건임.다른 사람들도 효율성을 위해서 힙을 사용했는데, 하 힙 구현해서 쓰기 너무나도 귀찮음 .. . . . ✅ 코드 // // b1238.swift // Algorithm // // Created by Hamlit Jason on 2022/05/11. // // https://www.acmicpc.net/problem/1238 import Foundation struct b1238 { static func run() { let input = readLine..

[Swift] BOJ 1916 최소비용 구하기

BOJ 1916 최소비용 구하기 ✅ 아 이거 다익스트라 문제인데, 안풀린다. 거의 어제부터 오늘까지 이틀을 풀었는데 풀지 못하다니! 차라리 반례라도 많아서 어느 지점에서 내 알고리즘이 잘못 되었던 것인지 캐치하고 싶은데 ㅜ 내가 유독 약한게 그래프 부분인 것 같다. 근데 안되는거 오래 붙자고 있지 말라고 해서 그냥 다른 사람 코드 좀 보고 이해하는 방향으로 공부했다. 이걸 하루종일 할 수는 없으니까.- ✅ 코드 let n = Int(readLine()!)! var cities = [[(end: Int, value: Int)]](repeating: [], count: n+1) // label을 달아서 배열 생성 for _ in 0..

Swift 디자인패턴 Factory Pattern (팩토리 패턴)

Swift 디자인패턴 Factory Pattern (팩토리 패턴) Factory Pattern은 객체 생성을 캡슐화하여, 클라이언트가 객체 생성 방식에 대해 알 필요 없도록 설계하는 생성 패턴이를 통해 객체 생성 로직을 중앙 집중화하고, 유지보수를 용이하게 함. 히스토리2022-05-08: 디자인 패턴 스터디 정리2024-11-28: 포스팅 글 재정리 및 예제 변경 Factory Pattern팩토리 패턴은 다른 개념으로도 확장 가능단순 팩토리 패턴: 조건에 따라 객체를 생성하는 메서드만 제공 (정식 팩토리 패턴은 아님)팩토리 메서드 (Factory Method) 패턴: 서브클래스에서 객체 생성 과정을 오버라이드하여 생성 로직을 확장추상 팩토리 (Abstract Factory) 패턴: 관련 객체군을 생성하..

[iOS] tableViewCell Swipe Action 구현하기

tableViewCell Swipe Action 구현하기 ✅ 이번 시간에는 tableViewCell Swipe Action을 구현해보자 직접 애플 문서를 읽어보는 것을 추천하지만, 이 포스팅에서는 정말 간략하게 어떻게 사용하는 지만 알아보자. 이번 포스팅에서는 1. tableView에서 leading과 trailing swipe를 지원해주는 메소드를 사용하여 구현하는 것 2. editStyle을 메소드를 활용하여 구현하는 것 을 볼 예정이다. ✅ 1. tableView에서 leading과 trailing swipe를 지원해주는 메소드를 사용하여 구현하는 것 func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt i..

[Swift] 프로그래머스 LV2. [1차] 뉴스 클러스터링

프로그래머스 LV2. [1차] 뉴스 클러스터링 ✅ 걸린시간 : 4:26 ~ 5:35 (약 1시간 10분) 처음으로 문제를 해결하는데 걸린시간 4:26 ~ 4:56(30분) 추가적으로 시간이 걸린 이유: 테스트케이스 4,7,9,10,11 실패 테스트 케이스 4,7,9,10,11 [반례] str1: "BAAAA" str2: "AAA" answer: 32768 이 부분에서 봐야하는 점은 중복의 처리이다. 2글자씩 끊을 경우, str1 = ["BA", "AA", "AA", ""AA"] str2 = ["AA", ""AA"] 이렇게 나뉘게 된다. 여기에서 str1에는 AA가 3개 str2에는 AA가 2개이다. 따라서 중복은 2개가 되어야한다. 그런데 위의 테스트 케이스가 틀린 경우에는 이를 정확하게 처리하지 못하는..

Swift 디자인패턴 MVVM Pattern (MVVM 패턴)

Swift 디자인패턴 MVVM Pattern (MVVM 패턴) MVVM 패턴은 모바일 개발에서 자주 사용하는 아키텍처 패턴. 히스토리2022-04-26: 디자인 패턴 스터디 정리2024-11-28: 포스팅 글 재정리 및 예제 변경   MVVM Pattern기본적으로 아래의 구성요소들로 구성Model: 앱의 데이터 및 비즈니스 로직의 일부View: 앱의 화면 영역 담당ViewModel: View와 Model의 중재자 역할MVVM 패턴은 파생 아키텍처가 많고, 아키텍처에 따라 용어의 차이도 존재하여, 가장 기본적인 것들을 서술클린아키텍처MVVM-CVIPERRIBsReactorKitTCA 코드 예제UIKit이랑 SwiftUI에서 모두 MVVM을 사용하는 기본 예제를 확인할 수 있도록 만들어 둠ViewModel..

[Swift] 프로그래머스 LV2. 수식 최대화

프로그래머스 LV2. 수식 최대화 ✅ 구현만 하면 문제였는데, 은근히 오래걸렸다. 내가 구현에서 생각보다 오래걸리는데, 문제를 생각하고 설계는 빨리 마치는데, 근데 자꾸 어떤 문제가 발생한다.. 예외처리가 부족하기도 하지만, 그보다도 코드상에서 remove 같은 작업에서 발생하는 실수가 너무 많다. ✅ 코드 알고리즘 접근법에 대해서 처음에는 계산기 알고리즘을 사용하려고 했다. 중위 후위 등 구글에 치면 다양한 알고리즘이 나온다!! 하지만 난, 꼭 그런걸 정량적으로 알고 있어야 문제를 푸는건 불만이었기에 다른 로직으로 내 방식대로 풀어보았다. priority를 6번 반복하는 이유는 어차피 연산자 3개로 우선순위를 매기는 경우의 수가 6가지 밖에 되지 않는다. 두번째는 while문인데, 연산자를 찾아서 그 ..

[Swift] 프로그래머스 LV2. [3차] 파일명 정렬

프로그래머스 LV2. [3차] 파일명 정렬 ✅ 프로그래머스 LV2. [3차] 파일명 정렬 하하,, 문제 딱 봤을 때 이건 10분컷! 이랬는데 결국은 엄청 오래걸림 처음에는 정규 표현식으로 해결하려고 했는데, 정규 표현식 공부를 제대로 해본 적 없어서 구글링으로 사용하는건 학습에 별로 도움 안될거 같아서 패스 (+ 정규 표현식의 시간복잡도에 대한 개념이 없어서 알고리즘이 효율적이지 않을 수도 있단 생각도 들었음) 그래서 그냥 for문을 통해서 접근함. 근데!! 65점에서 막혔음 ^__^ ✅ 코드 (틀린코드 65점) 하도 많이 틀려서 질문도 함.. 반례를 못찾아서 https://programmers.co.kr/questions/30185 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로..