Trulyawesome
(Codility) Lesson1 Iterations [Swift4] 본문

이 문제는 Integer타입의 N 을 2진수로 바꿔서 1과 1사이의 0의길이 최댓값을 구하는 문제입니다 .
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
|
public func solution(_ N : Int) -> Int {
let a = String(N, radix: 2)
var cnt: Int = 0
var maxCount: Int = 0
var check: Bool = false
for i in 0..<a.count {
let index = a.index(a.startIndex, offsetBy: i)
if(a[index] == "1") {
if(cnt > maxCount) {
maxCount = cnt
}
check = true
cnt = 0
}else {
if(check) {
cnt += 1
}
}
}
return maxCount
}
|
cs |
다음과 같이 구현하였습니다. 2진수는 String함수를 이용하여 문자열형태의 2진수를 만들었습니다. String 타입은 반복문에서 index이동이 번거롭습니다. index함수를 이용해서 시작부분과 offset을 정해주어야 합니다. 2진수 변경 방법과 String iterator부분만 숙지하시면 쉽게 풀 수 있습니다.😄