일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- react
- completion handler
- React Native
- 뷰 생명주기
- 라이브러리 없이
- 리액트 네이티브
- data driven construct
- 스켈레톤 통합
- 360도 이미지
- 파노라마 뷰
- launch screen
- 명시적 정체성
- 360도 이미지 뷰어
- SwiftUI
- 구조적 정체성
- Android
- ios
- 360도 뷰어
- requirenativecomponent
- react-native-fast-image
- launchscreen
- panorama view
- 앱 성능 개선
- ssot
- 네이티브
- React-Native
- 뷰 정체성
- 리액트
- @sendable
- native
- Today
- Total
목록개발지식 정리/알고리즘 (18)
Neoself의 기술 블로그

위 이미지는 제 현재 프로필 이미지입니다... 잘은 모르겠지만, 일단 롤로치면 아이언 5이지 않을까요? 오늘부터 백준으로 알고리즘 루틴을 아예 바꿔볼 생각입니다. A+Bimport Foundationlet input = readLine()!let arr = input.components(separatedBy:" ")print("\(Int(arr[0])!+Int(arr[1])!)")확실히 프로그래머스에 비해선 많이 불친절한것같습니다. 날것의 맛이 좀 있는 듯하네요...! readLine 함수서부터 시간을 생각보다 많이 쓰게될줄은 몰랐습니다... A-Bimport Foundationlet input = readLine()!let arr = input.components(separatedBy:" ")print..
K번째 수func solution(_ array:[Int], _ commands:[[Int]]) -> [Int] { return commands.map{$0.map{$0-1}}.map{ array[$0[0]...$0[1]].sorted()[$0[2]]}}주어진 commands 배열의 경우 배열용 id에서 1이 더해진 값을 담고 있었기 때문에, map{$0.map{$0-1}} 고차함수를 적용해 2차원 배열 내부 값들을 일괄 변경해주었다.그 이후에 범위 연산자를 통해 array의 일부 영역에 접근, 오름차순 정렬 후 $0[2]번째 값을 접근하였다. 두 개 뽑아서 더하기func solution(_ numbers:[Int]) -> [Int] { var ans:[Int] = [] for i in..
이상한 문자 만들기func solution(_ s:String) -> String { var ans:String = "" var id = 0 for ch in s { if ch == " " { ans.append(ch) id = 0 } else { if id%2==0 { ans.append(ch.uppercased()) } else { ans.append(ch.lowercased()) } id+=1 } } return ans}단어마다 짝수 및 홀수 번째인지를 구분하..
직사각형 별찍기func myPrint (_ a:Int,_ b:Int) { for i in 0..Array(repeating:String,count:Int)로 String 타입의 배열 생성 후, joined()로 단일 String로 변경 최대공약수와 최소공배수func _solution(_ n:Int, _ m:Int) -> [Int] { var myMax = min(n,m) while true { if max(m,n)%myMax==0 && min(m,n)%myMax==0 { break } else { myMax-=1 } } var myMin = 1 while true { if ((myMa..
약수의 개수와 덧셈func addMinus(_ left:Int, _ right:Int) -> Int { var ans = 0 for i in left...right { var cnt=1 // 원래 수 if i != 1 { for a in 1...i/2 { if i%a==0 {cnt+=1} } } ans += cnt%2==0 ? i : -i } return ans}... 연산자를 활용하여 순회할 범위를 지정한 다음, 매 순회마다 %연산자로 약수인지 여부를 파악하였다. 이때 시간복잡도를 줄이고자 순회하는 범위를 i가 아닌 i/2로 축소하였는데, 이의 경우 i가 1일 경우는..
제일 작은 수 제거하기func removeLeast(_ arr:[Int]) -> [Int] { var arrMin = arr.min() return arr.count == 1 ? [-1] : arr.filter{$0 != arrMin}}filter함수로 매 요소마다 arr.min()함수를 호출하면 1번 케이스에서 시간초과를 겪는데, arr.min() 함수는 그 자체로 모든 요소를 1회 순회하며 O(n) 시간 복잡도를 갖기 때문이다. 따라서 arrMin 변수 선언 시에만 해당 함수를 실행하고, 이후 filter로 arr 순회할때 해당 변수를 재사용 할 경우 시간초과 문제를 해결할 수 있다. 핸드폰 번호 가리기func phoneNum(_ phone_number:String) -> String..
평균 구하기func getMean(_ arr: [Int]) -> Double { return Double(arr.reduce(0,+))/Double(arr.count)}reduce 고차함수를 사용해 총합을 구한후, 인자 배열 내부 요소 개수를 나누어 평균값을 구하였습니다. 이때 반환 타입 Double임을 유의하여 타입을 수동 지정해주었습니다. x만큼 간격이 있는 n개의 숫자시간복잡도: O(n) = map 고차함수로 모든 요소 순회하기 때문func x_n_other(_ x:Int, _ n:Int) -> [Int64] { return Array(1...n).map { Int64($0 * x) }} 1...n로 1~n까지의 범위를 생성한 후, Array 함수에 삽입하여, 1부터 n까지 순차적으로 요..
최댓값과 최솟값func solution(_ s: String) -> String { let myArr = s.components(separatedBy: " ").compactMap{ Int($0) } return "\(myArr.min() ?? 0) \(myArr.max() ?? 0)"}.components(separatedBy: " ")Swift의 String 클래스에서 제공하는 메서드입니다.함수를 통해 "1 2 3 4"와 같이 공백과 함께 주어진 String값들을 데이터 접근이 용이한 [String] 타입의 배열로 반환합니다. .compactMap {}Swift의 고차 함수 중 하나로, map과 filter 기능을 결합한 것과 유사하다고 생각하면 된다.이때, 변환한 결과가 nil이면 자동으..