SWIFT(87)
-
[Leetcode/Easy] 두 수의 합 (1. Two Sum, Swift)
https://leetcode.com/problems/two-sum/description/ 🤔 문제 설명덧셈하여 타깃 숫자를 만들 수 있는 배열의 두 숫자 인덱스를 반환하세요.입력된 nums에는 정확히 하나의 답이 있다고 가정하며, 또한 동일한 요소를 두 번 사용하지 않는다고 가정합니다.답은 임의의 순서로 반환할 수 있습니다.[2,7,11,15], target = 9// [0,1] 🧑🏻💻 첫 번째 풀이와 코드 (Swift ver.)단순하게 중첩 반복을 사용하기보다, 한 번의 반복에서 한 값을 가지고 target-num으로 나머지 한 값을 찾는 방법을 생각했다.값은 array.firstIndex(of: target-num) 문법을 사용해서 찾을 수 있었고,자기 자신을 찾는 경우는 생략하기 위해 조..
2024.07.01 -
[Design Pattern] 내가 보려고 정리하는 Swift 디자인 패턴 (6) - 팩토리 패턴(Factory Pattern)
1️⃣ 팩토리 패턴 왜 쓰는 건데?팩토리 패턴 (Factory Pattern)은 객체의 생성을 "팩토리"라는 별도의 클래스로 분리하여, 추상화된 부분에 의존하도록 만드는 패턴이다.가장 근본적으로는 팩토리 패턴으로 객체 생성 과정의 책임을 분리할 수 있으며,더 나아가 복잡한 객체를 생성하는 과정을 숨길 수 있고, 객체(= UI Component) 생성 과정에서 변경사항이 생겼을 때 수정이나 확장이 용이하다는 장점을 가지게 된다.팩토리 패턴은 크게 다시, 팩토리 메서드 패턴 (Factory Method Pattern)과 추상 팩토리 패턴 (Abstract Factory Pattern)으로 나눌 수 있다. 자세한 내용은 아래에서 순서대로 코드와 예시와 함께 살펴보도록 하겠다.Factory Method : 단일..
2024.07.01 -
[Leetcode/Medium] 그룹 애너그램 (49. Group Anagrams, Swift)
https://leetcode.com/problems/group-anagrams/description/ 🤔 문제 설명문자열 배열이 주어지면, 애너그램 단위로 그룹화하세요.애너그램(Anagram)이란 다른 단어나 구문의 글자를 재정렬하여 다른 뜻을 가진 단어로 바꾸는 것을 뜻합니다.(예시: '문전박대' -> '대박전문')strs = ["eat","tea","tan","ate","nat","bat"]// [["bat"],["nat","tan"],["ate","eat","tea"]] 💡 풀이입력으로 들어온 String Array를 반복하면서 해당 단어랑 같은 애너그램 단위로 그룹화할 수 있는 단어를 찾는 것이 이 문제의 핵심이었다.이때 단어를 sorted해주게 되면, 같은 애너그램 단위에서 나올 수 있는 ..
2024.06.30 -
[Leetcode/Easy] 가장 흔한 단어 (819. Most Common Word, Swift)
https://leetcode.com/problems/most-common-word/description/ 🤔 문제 설명paragraph에서 금지된 단어를 제외하고, 가장 빈번하게 등장하는 단어를 출력하세요.paragraph의 단어는 대소문자를 구분하지 않으며, 구두점(마침표, 쉼표 등) 또한 무시합니다. 답은 소문자로 반환해야 합니다.paragraph = "Bob hit a ball, the hit BALL flew far after it was hit."banned = ["hit"]// "ball" 💡 풀이사용되는 내부 메서드가 많아서 그렇지 풀이 과정은 단순하다.한 문장으로 되어있는 것을 단어별로 구분 -> 소문자 변환 + 구두점 무시 -> 단어별로 빈번 횟수 count -> 가장 많은 coun..
2024.06.29 -
[Design Pattern] 내가 보려고 정리하는 Swift 디자인 패턴 (5) - 옵저버 패턴(Observer Pattern with NotificationCenter)
1️⃣ 옵저버 패턴 (Observer Pattern) 기본 개념 살펴보기옵저버 패턴 (Observer Pattern)의 개념은 매우 간단하다.한 객체에서 일어나는 정보를 다른 특정한 여러 객체들에게 전달할 때 사용하는 디자인 패턴이다.여기서 말하는 "객체에서 일어나는 정보"란 데이터의 추가/수정/삭제와 같은 변경사항, 객체에서 발생한 이벤트 등을 의미한다고 이해하면 되겠다.예시나 자세한 코드로 디자인 패턴을 살펴보기 전에, 앞으로 사용될 기본 개념들에 대해 살펴보고 넘어가 보자!*용어도 각 예시마다 다양하게 바뀌면서 사용되니까 모두 동일한 느낌으로 혼용해서 사용된다고 이해하면 좋겠다.Subject, Publisher (주제) : 옵저버들이 관심있게 보는 객체 (주제) = 특정한 이벤트가 발생되거나, 상태..
2024.05.14