반응형
https://app.codility.com/programmers/lessons/1-iterations/binary_gap/
Lesson 1 Iterations (Easy)
BinaryGap
Find longest sequence of zeros in binary representation of an integer.
처음 풀어보는 Codility 문제. 영어로 되어 있어 당황스러웠지만, 크게 어렵진 않았다.
Swift언어는 Swift4 로 지원이 되는듯..?
주어진 양의 정수 N을 이진수로 변환했을 때, 1과 1로 둘러싸인 연속된 0의 갯수 중 최대값을 반환하는 문제.
입출력 예시
print(solution(9)) //1001 => 2
print(solution(529)) //1000010001 => 4
print(solution(20)) //10100 => 1
print(solution(15)) //1111 => 0
print(solution(32)) //100000 => 0
내 답안
import Foundation
public func solution(_ N : Int) -> Int {
let n = String(N, radix: 2) //2진수 변환
var zeroCnt = 0 //연속된 0의 갯수 세는 변수
var zeroLen = [Int]() //binary gap의 길이를 담는 배열
for i in n {
if i == "0" { zeroCnt += 1 }
else {
if zeroCnt == 0 { continue }
zeroLen.append(zeroCnt)
zeroCnt = 0
}
}
return zeroLen.max() ?? 0 //binary gap 길이 중 최대값 반환
}
이진수 문자열을 반복문 돌려 0이면 zeroCnt +1 해주고, 1이면 배열에 zeroCnt를 담도록 했다.
binary gap이 존재할 경우, 배열에 그 길이를 담아 최대값을 반환해주었다.
결과 나오는데 신기하다. 문제 푸는 과정 녹화하는 것처럼 타임라인도 보여주더라.
Xcode에서 풀고 복붙했는데... ㅎ
728x90
반응형
'Algorithm > Codility' 카테고리의 다른 글
[Swift 알고리즘] Codility demo task (0) | 2023.01.04 |
---|---|
[Swift 알고리즘] Codility: CyclicRotation (0) | 2022.05.23 |