728x90
간만에 찾아온 코코종입니닷...
갓생을 살기로 마음먹어서... iOS, 코딩테스트, CS 공부를 하기로 마음먹은지 3일차입니당
코딜리티의 lesson을 다 swift로 풀어보려고 해서 그 첫삽을 떴답니다 ㅎㅎ..
해당 문제는 lesson1 - BinaryGap 에서 확인이 가능합니다.
간단하게 설명하면 주어진 Int N을 이진수로 바꾸고 이 중 1과 1사이에 있는 연속된 0의 최대 갯수를 구하는 문제입니다.
저는 Int N -> String 하는 메서드인 intToBinary()를 구현했습니다.
이후 해당 String을 forEach로 돌면서 0인지 1인지에 따라 tmp에 현재 연속된 0의 갯수를 저장했습니다.
1을 만나게되면 answer과 tmp값중 큰 값으로 answer를 갱신해주고 tmp를 0으로 초기화합니다.
처음에 풀때는 32의 경우(100000) 답이 0이 되어야하는데 이에 대한 처리를 못했습니다(문제를 잘 읽자..!)
public func solution(_ N : Int) -> Int {
let binaryN = intToBinary(N)
// print(binaryN)
var answer = 0
var tmp = 0
binaryN.forEach {
if $0 == "0" {
tmp += 1
} else {
answer = max(answer, tmp)
tmp = 0
}
}
return answer
}
func intToBinary(_ N: Int) -> String {
var n = N
var strN = ""
while n >= 2 {
strN = String(n%2) + strN
n = n/2
}
if n == 1 { strN = String(1) + strN}
return strN
}
간단하지만 간만에 알고리즘 문제를 보니까 생각보다 시간이 걸리더라구여... 꾸준히 공부해보겠습니당 ><
728x90
'알고리즘' 카테고리의 다른 글
[Swift 알고리즘] Codility lesson2 - OddOccurrencesInArray (0) | 2022.10.30 |
---|---|
[Swift 알고리즘] Codility lesson2 - CyclicRotation (0) | 2022.10.23 |
[Swift 알고리즘] 백준 2206 - 벽 부수고 이동하기 (0) | 2022.03.30 |
[Swift 알고리즘] 백준 7562 - 나이트의 이동 (0) | 2022.03.30 |
[Swift 알고리즘] 백준 6198 - 옥상 정원 꾸미기 (0) | 2022.03.27 |