Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- persistentStoreCoordinator
- Associated Value
- Swift closure
- 2022 부스트캠프
- Swift
- expensive operation
- 일급 객체
- NSPredicates
- Clean swift
- iOS Static Library
- Swift 고차함수
- 트레일링 클로저
- Java
- NSSortDescriptor
- Swift LinkedList
- CoreData Filter
- 스위프트 클로저
- dateFormatter
- CoreData
- leetcode #01
- 다익스트라 이해
- codability
- iOS Static Library 사용하는방법
- NSManagedObject SubClass
- LightWeight Migration
- CoreData Stack
- Raw value and Associated value
- CoreData Concurrency
- 1009번
- Persistent store Coordinator
Archives
- Today
- Total
하루를살자
[Swift] Binary Gap - Codability 본문
문제
https://app.codility.com/programmers/lessons/1-iterations/binary_gap/
BinaryGap coding task - Learn to Code - Codility
Find longest sequence of zeros in binary representation of an integer.
app.codility.com
문제 이해
- 인자 값으로 들어온
N
값을 이진수로 표현했을때, 1과 1 사이 최대 갭의 값을 반환하는 함수를 만들어라.
ex) N = 1041, binary = 100000100001, 1과1 사이의 갭 값들: 5,4 -> 5 반환
문제 접근 과정
- N 값을 binary 로 계산
- binary gap 을 찾기 위해 1 이 들어 있는 인덱스 값을 이전 인덱스 값과 빼준다.
- 빼준 값들의 배열의 max 를 찾아 그 값에 -1 해서 반환. (배열의 길이가 1일시 0 반환)
func binaryGap( _ N: Int) -> Int {
var binaryArray: [Int] = []
var resultArray: [Int] = []
var leftOver = N
//binary 값 구하기
while leftOver > 0 {
binaryArray.append(leftOver % 2)
leftOver = leftOver / 2
}
// 1이 들어 있는 값의 인덱스를 빼옴
binaryArray = binaryArray.enumerated().filter({$0.element == 1}).map({$0.offset})
//배열 binaryArray 인덱스 i 와 i+1 값을 서로 빼주고, 그값을 resultArray 에 더함.
for i in 0..<binaryArray.count - 1 {
resultArray.append(binaryArray[i+1] - binaryArray[i])
}
return resultArray.count < 1 ? 0 : resultArray.max()!-1
}
새로배운 swift 문법
- enumerated() 과 고차 함수 의 사용.
- Array.enumerated() -> (offset, element) -> .filter, map 적용
'Algorithm Practices' 카테고리의 다른 글
프로그래머스 (최단거리), 다익스트라 이해하기 (0) | 2022.08.03 |
---|---|
2022 부스트캠프 자가진단 함수구현 문제 (0) | 2022.06.13 |
[Swift] LeetCode #01. Two Sum (0) | 2022.06.13 |
백준 1009 번 - 분산처리 (생각정리) (0) | 2022.01.05 |
Comments