오늘은 의존성 주입(DI)에 대해 공부한 내용을 정리해보려 합니다. https://ko.wikipedia.org/wiki/의존성_주입 의존성 주입이란? 객체지향 프로그래밍에서 의존성이 있다는 것은 클래스 간에 의존 관계가 있다는 것을 의미합니다. 즉, 다음과 같이 A라는 클래스에서 B클래스 객체를 생성해 사용하면 의존관계가 형성되는것이죠. class B: A { } class A { let b = B() // 의존 관계 형성 } 의존관계가 형성되면 한 클래스가 바뀔 때 다른 클래스가 영향받게 되는데. 이러한 의존관계를 약하게 만들기 위한 방법이 의존성 주입입니다. 객체의 생성과 사용의 관심을 분리함으로써 가독성과 코드 재사용성을 높이는데 그 의의가 있습니다. 만약 메일을 사용하는 User라는 클래스가 있..
이 문제 포스팅할 생각이 없었는데, 생각보다 테스트케이스 5번과 10번에 대해 어려움을 겪는 사람들이 많은것 같아서 포스팅해보려구 합니다 ㅎㅎ (저도 5번, 10번 통과가 안되어서 뭐가 문제인지 헤멨어요 ㅜㅜ) programmers.co.kr/learn/courses/30/lessons/17679 코딩테스트 연습 - [1차] 프렌즈4블록 프렌즈4블록 블라인드 공채를 통과한 신입 사원 라이언은 신규 게임 개발 업무를 맡게 되었다. 이번에 출시할 게임 제목은 "프렌즈4블록". 같은 모양의 카카오프렌즈 블록이 2×2 형태로 4개가 붙 programmers.co.kr 문제는 위와 같은 격자 배열에서, 블록이 2×2 형태로 4개가 붙어있을 경우 사라지면서 점수를 얻는 게임입니다. 해당 블록이 사라지면 위에 있..
SwiftUI 기초 - 공식 튜토리얼 정리(1)에서 이어지는 내용입니다. SwiftUI 두 번째 튜토리얼입니다. 첫 번째 튜토리얼에서는 사용자에게 보여줄 정보를 하드 코딩했다면 이번 튜토리얼에서는 데이터를 저장하는 모델을 만들어서 사용해 볼 겁니다. 먼저 developer.apple.com/tutorials/swiftui/building-lists-and-navigation 이곳에 들어가서 프로젝트 파일을 다운로드해주세요. 만약 영문으로 튜토리얼을 진행하고 싶으시다면 해당 링크에서 쭉 진행해 주셔도 무방합니다. 다운로드한 프로젝트 Resources 폴더의 landmarkData.json 파일을 우리가 튜토리얼 1에서 만들었던 프로젝트에 드래그 앤 드랍합니다. 그다음 Landmark라는 이름의 Swift ..
새로운 프로젝트에 SwiftUI를 사용해보기 위해 블로그에 SwiftUI를 정리해보려 합니다. ㅎㅎ 조금 찾아보니까 애플이 정리해 놓은 공식 튜토리얼이 잘 되어 있더라구요? 혹시나 영문으로 공부하고 싶으신 분들은 해당 사이트 참고 바랍니다. 제가 앞으로 SwiftUI에 대해 정리하게 될 글 역시 모두 developer.apple.com/tutorials/swiftui를 기반으로 합니다! SwiftUI란? "SwiftUI is a modern way to declare user interfaces for any Apple platform. Create beautiful, dynamic apps faster than ever before." > SwiftUI는 모든 Apple 플랫폼에 대한 사용자 인터페이스..
[iOS] GCD - Dispatch Queue 제대로 알고 쓰자! (1) 에서 이어지는 글입니다 :) QOS developer.apple.com/library/archive/documentation/Performance/Conceptual/EnergyGuide-iOS/PrioritizeWorkWithQoS.html Energy Efficiency Guide for iOS Apps: Prioritize Work with Quality of Service Classes Energy Efficiency Guide for iOS Apps developer.apple.com A quality of service (QoS) class allows you to categorize work to be performe..
오늘은 GCD에 대해 정리해보려 합니다! GCD는 iOS앱 프로그래밍에서 매우 중요한 부분이기도 하고 잘 정리된 글들이 많기 때문에, 저는 핵심적인 개념과 코드(실험?) 위주로 정리해볼까 합니다. GCD란? - Grand Central Dispatch의 약자로, Apple에서 멀티 코어 프로세서 및 기타 대칭적 멀티 프로세싱 시스템이 있는 시스템에 대한 애플리케이션 지원을 최적화하기 위해 개발 한 기술입니다. GCD는 스레드 풀 패턴을 기반으로 한 작업 병렬 처리의 구현으로 스레드 풀의 관리를 프로그래머가 아닌 운영체제에서 관리하기 때문에 프로그래머는 쉽게 사용할 수 있습니다. (사용하기 단순하고 성능도 좋다는 뜻) (위키 백과, 부스트코스 참고) Dispatch Queue An object that m..
오늘은 정규표현식에 대해 정리해보려고 합니다. 정규표현식을 모르는 사람이 표현식을 보면 매우 난해하게 느껴지지만 알고 사용하면 정말 정말 유용하기 때문에, 겁먹지 마시고 공부해보시길 바랍니다 (문자열 처리에 수십 줄의 코드를 작성해야 할 걸 단 몇 줄 만에 끝낼 수 있거든요!) 정규표현식은 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어 입니다. (위키 참고) 이 정규표현식을 사용하면 특정한 규칙을 만족하는지 유효성 검사에 유용하기 때문에 사용자가 입력한 이메일이나 비밀번호가 우리가 만들어 놓은 패턴 혹은 규칙과 부합하는지 쉽게 확인할 수 있습니다. 우선 정규표현식을 사용하려면 사용방법을 알아야겠죠? 정규 표현식에는 다음과 같은 *메타 문자들이 사용됩니다. * 메타 문자: 원래 그 문..
안녕하세요 오랜만에 알고리즘 풀이를 포스팅해보려 합니다 :) 오늘 포스팅할 문제는 카카오 blind recruitment에 나왔던 '자물쇠와 열쇠' 입니다. programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr [문제 설명] [제한사항 & 입출력 예] 이 문제는 2차원 배열을 잘 다룰 수 있는지 확인하는 문제로, 2차원 배열의 회전과 이동방법을 구현해서 완전탐색을 수행하면 풀리는 문제입니다. [접근 방식] 1. key가 회전 가능하기 때문에, key를 회전시키기 위한 rotat..
스트링 편집 거리(string edit distance) 알고리즘이란 두 문자열의 유사도를 측정하기 위해 사용되는 알고리즘으로 Levenshtein distance(LD)라고도 합니다. 스트링 편집 거리 알고리즘은 논문, 보고서 등의 표절 검사, DNA 염기 서열의 유사도 검사 등에 사용되어지는데요. 두 문자열의 유사도는 S: 원래 스트링 T: 비교 스트링이라 했을 때 S -> T로 변환하는데 필요한 삽입, 삭제, 대치 연산의 최소 비용(최소 편집 횟수)을 구함으로써 판단합니다. (비용이 작게 나올수록 유사도가 큼) 만약 GUMBO라는 단어와 GAMBOL이라는 단어의 편집 거리를 구해보면, U -> A로 대치 (비용 +1), 맨 마지막에 L 추가 (비용 +1)로 편집 거리는 2가 되게 됩니다. (삽입, ..
오늘은 ARC 즉, Automatic Reference Counting에 대해 정리해보려 합니다. ARC란? - Swift는 ARC를 활용해 앱의 메모리 사용을 추적하고 관리합니다. 인스턴스가 더 이상 필요하지 않으면 메모리에서 해제합니다. 그렇기 때문에 우리는 메모리 관리에서 비교적 자유로워질 수 있죠 ㅎㅎ 하지만, 강한 참조로 순환이 이루어질 때는 메모리 누수가 발생할 수 있기 때문에 우리가 적절한 조치를 해줘야 합니다. 지금은 무슨 말인지 잘 모르겠어도 뒷부분에 설명할 예정이니 걱정 안 하셔도 됩니다! 작동 방식 - ARC는 각 인스턴스가 얼마나 참조되고 있는지를 추적하고 저장함으로써 메모리 관리를 합니다. 만약 참조 counting이 1 이상이면 인스턴스는 메모리에 계속 남아 있고 0이 되었을 때..