적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

반응형

분류 전체보기 568

[Swift 알고리즘] LeetCode 2506. Count Pairs Of Similar Strings

○ Hash Table, 조합 | Easy 2506. Count Pairs Of Similar Strings 문제 해결이 어렵진 않은데, 조합 구현 공식은 컨닝함.. ㅎㅎ 영어가 문제인가 문제 설명이 문제인가.. 처음에 읽어보고 뭐라는건지 모르겠어서 포기할 뻔 했쟈나 이해하고 나면 간단함. 1. words 안의 각 문자열들을 Set으로 중복 제거하고, sort로 정렬하고 다시 문자열로 만들어준다. 2. 위의 변환 과정을 거친 문자열을 딕셔너리의 키 값으로 넣어 주고, 같은 문자열일 경우 값을 1씩 더해준다. 3. 딕셔너리에 저장된 중복 문자열로 pair 가 만들어질 수 있는 경우의 수는 nCr 이기 때문에, 조합 공식을 사용해 (n * (n -1)) / 2 로 구해준다. import Foundation ..

Algorithm/LeetCode 2023.04.25

[Swift 알고리즘] LeetCode 2399. Check Distances Between Same Letters

○ Hash Table | Easy LeetCode 2399. Check Distances Between Same Letters 소문자 알파벳의 아스키 값을 사용하는 것이 관건인 문제. 문제 이해하고 나면 어렵진 않다. 근데 문제 설명을 너무 어렵게 해놓음.. ㅡㅡ 내가 이해력이 딸리는건가? ㅎ 0-indexed string 은 무슨말이지? i번째 문자 저게 대체 뭔말인고 ? ㅋㅋㅋㅋ 그런거 다 무시하고 그냥 같은 문자 두개씩 주는데, 같은 문자 두개의 인덱스 차이를 구하면 되는 문제이다. 그 차이가 distance 배열의 알파벳 문자 인덱스와 일치하는지 확인해주면 됨. 1. 문자가 딕셔너리에 없으면 해당 문자의 인덱스를 값으로 추가해주고, 이미 있으면 현재 인덱스와 기존 인덱스의 차를 구해서 같은 문자..

Algorithm/LeetCode 2023.04.25

[Swift iOS] 이미지 캐시 처리 Memory vs. Disk

앱에서 사용되는 이미지가 많을 경우, 이미지를 매번 서버로부터 받아오면 로딩 속도도 오래걸리고 계속 네트워크 통신을 해주는 것도 리소스 낭비이기 때문에 이미지를 캐싱하는 작업을 해보았다. 이미지 캐싱이란? 다운로드된 이미지를 캐시(메모리 or 디스크)에 저장해두었다가 불러오는 방식으로, 한 번 다운받은 이미지는 별도의 리소스를 소모할 필요 없이 빠르게 가져와서 보여줄 수 있다. 물론 KingFisher SDWebImage 같은 이미지 라이브러리를 사용하면 이미지 다운로드 및 캐싱을 알아서 자동으로 처리해주고, 이미지를 메모리에 저장하는 대신에 디스크에 저장하고 필요한 만큼만 메모리에 올려서 사용하기 때문에 메모리 사용량도 줄이고 편하게 구현해줄 수 있다. 그치만 직접 구현 한번 해보자고...! iOS에서..

XCTest 로 Unit Test 하는 법 + TDD

1. Unit Test 2. Xcode에서 XCTest 활용하기 3. TDD 1. 단위 테스트 Unit Test 단위 테스트 Unit Test 란? 유닛 테스트(unit test)는 컴퓨터 프로그래밍에서 소스 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차다. 테스트 케이스(Test case) 작성을 통해서 언제라도 코드 변경으로 인해 문제가 발생할 경우, 단시간 내에 이를 파악하고 바로 잡을 수 있도록 해준다. 단위테스트 장점 문제점 발견 유닛 테스트의 목적은 프로그램을 작은 단위로 쪼개서 각 단위가 정확하게 동작하는지 검사하고 확인하는 것이다. 이를 통해 문제 발생 시 어느 부분이 잘못되었는지 정확하고 빠르게 확인할 수 있게 해주고, 프로그램의 안정성이 높아지며 디버깅 시간을 단축시킬..

프로토콜 사용시 주의해야 할 강한 순환 참조 문제

‘weak' must not be applied to non-class-bound 'any …Delegate'; consider adding a protocol conformance that has a class bound 이러한 에러가 떴다. 클래스 인스턴스 간에 강한 순환 참조가 발생하는 경우가 있는데 흔히 Delegate 패턴을 사용할 때 이런 문제가 발생할 수 있다. * Retain Cycle (= Strong Reference Cycle) : 두 클래스 인스턴스가 서로 참조를 유지하면서 메모리에서 해제되지 않아 메모리 누수가 생기는 현상 그래서 UITableViewDelegate도 다음과 같이 weak var로 정의되어 있음. weak var delegate: UITableViewDelegate..

디자인 시스템

디자인 시스템이란? 웹이나 모바일 등 서비스 디자인에 적용된 디자인 스타일의 규칙이나 가이드라인 공통으로 사용된 컬러, 폰트, 레이아웃, UI 컴포넌트들에 대한 정의 디자인 시스템을 정의하고 정확하게 사용하면 디자인 작업을 효율적으로 하고, 디자인의 일관성을 유지할 수 있다. 제품 전반에 일관성을 유지하여 사용자에게 친숙하고 안정된 느낌을 줄 수 있다. - UI 가이드라인 (스타일 가이드) UI를 표준화하고 화면 간 일관성을 확보하기 위한 가이드 - UX 가이드라인 서비스와 브랜드 측면에서 사용자가 일관적이고 차별화된 경험을 하도록 하기 위한 가이드 - 디자인 시스템 디자인 원칙과 규격, 재사용할 수 있는 UI패턴과 컴포넌트, 코드를 포괄하는 시스템을 말함. 정해진 디자인 패턴과 컴포넌트를 재사용하여 제..

Trend 2023.04.17

[Swift] Why double is preferred over float? (+ Int / Int32 / Int64)

Swift에서 Float 보다 Double 이 더 많이 쓰이는 이유? Swift에서 double은 float보다 더 많이 사용되는 이유는 정확성과 성능 때문이다. Double has a precision of at least 15 decimal digits, whereas the precision of Float can be as little as 6 decimal digits. Double은 64비트 부동 소수점 숫자를 나타내며 Float는 32비트 부동 소수점 숫자를 나타낸다. Double은 Float보다 더 많은 비트를 사용하기 때문에 더 큰 범위의 값과 더 높은 정확도를 가진다. 또한, 대부분의 현대 컴퓨터는 64비트 아키텍처를 사용하므로 Double이 더 효율적이며 더 빠른 계산을 할 수 있기 ..

Swift 언어에 대하여

About Swift https://www.swift.org/about/ Swift의 목표는 시스템 프로그래밍에서 모바일 및 데스크톱 앱, 클라우드 서비스로 확장하는 데 이르기까지 사용 가능한 최상의 언어를 만드는 것. 가장 중요한 점은 개발자가 올바른 프로그램을 작성하고 유지하기 쉽도록 설계되었다는 것. 이러한 목표를 달성하기 위해 Swift 코드는 다음과 같이 작성되어야 한다. Safe. Opting for safety sometimes means Swift will feel strict, but we believe that clarity saves time in the long run. Fast. Swift는 C 기반 언어를 대체하기 위한 것이기 때문에, 대부분의 작업에서 해당 언어와 성능이 비슷해..

[Swift 알고리즘] 백준 1931 회의실 배정

△ 그리디 Silver1 백준 1931번 회의실 배정 문제 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. 입력 첫째 줄에 회의의 수 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N+1 줄까지 각 회의의 정보가 주어지는데 이것은 공백을 사이에 두고 회의의 시작시간과 끝나는 시간이 주..

Algorithm/Baekjoon 2023.04.13
728x90
반응형