반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 "프로그래머스(Lv.2) - 이진 변환 반복하기" 문제를 풀었습니다.
Github
GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘
스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.
github.com
문제 링크
코딩테스트 연습 - 이진 변환 반복하기
programmers.co.kr
풀이
이번 문제는 문자열 문제입니다.
아마 Swift 한정 문자열 문제이지 않을까 싶네요.
왜냐하면 Swift에는 String(, radix:)가 존재하기 때문입니다.
먼저 0의 개수를 구해야 합니다.
이것은 filter 고차함수를 이용해 0으로 구성된 Array를 만들어 count를 구해주었습니다.
0을 제거한 후 길이는 s의 길이에서 위에서 구한 count를 빼서 구했습니다.
이 길이를 String(, radix:)를 이용해 이진수 String으로 변환합니다.
이것을 s가 1이 될 때까지 반복하면 됩니다.
생각보다 쉬운 문제였습니다.
감사합니다!
전체 코드
import Foundation
func solution(_ s:String) -> [Int] {
var s = s
var count = 0, times = 0
while s != "1" {
let replaceCount = s.filter { $0 == "0" }.count
count += replaceCount
s = String(s.count - replaceCount, radix: 2)
times += 1
}
return [times, count]
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형