📌 문제
코딩테스트 연습 - 이진 변환 반복하기 | 프로그래머스 스쿨
📌 풀이
(1) 문자열에서 특정 문자 제거 - filter 메서드
filter(_:) | Apple Developer Documentation
filter와 클로저를 활용하여 "0"만 제거할 수 있도록 했다.
var binaryString = "0101001011" // "110010101001"
binaryString.filter { $0 != "0"} // "111111"
(2) 이진법 변환 - radix 이니셜라이저
init(_:radix:) | Apple Developer Documentation
형 변환 메서드 String()에 radix 이니셜라이저를 넣어 해당 진법에 맞게 반환할 수 있도록 했다.
String(4, radix: 2) // "100"
📌 코드
import Foundation
func solution(_ s:String) -> [Int] {
// 반환할 결괏값의 요소를 할당
var binaryConvertCount = 0
var deleteZeroCount = 0
// 함수의 매개변수를 변수로 할당
var binaryString = s
// 이진수가 1이 될 때까지 반복
while (binaryString != "1") {
// 이진수의 모든 0을 제거하여 제거된 새 변수에 할당
let convertString = binaryString.filter{ $0 != "0" }
// 제거된 모든 0의 개수를 count
deleteZeroCount += binaryString.count - convertString.count
// convertString 길이에 해당하는 이진수를 문자열로 변환하여 이진수에 다시 할당
binaryString = String(convertString.count, radix: 2)
// 이진 변환 횟수 count
binaryConvertCount += 1
}
// 이진 변환의 횟수와 변환 과정에서 제거된 모든 0의 개수를 각각 배열에 할당
return [binaryConvertCount, deleteZeroCount]
}
'코딩 테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] (Swift) 시저 암호 - Lv.1 (0) | 2023.05.02 |
---|---|
[프로그래머스] (Swift) 다음 큰 숫자 - Lv.2 (0) | 2023.05.01 |
[프로그래머스] (Swift) JadenCase 문자열 만들기 - Lv.2 (0) | 2023.04.25 |
[프로그래머스] (Swift) 문자열 내림차순으로 배치하기 - Lv.1 (0) | 2023.04.20 |
[프로그래머스] (Swift) 제일 작은 수 제거하기 - Lv.1 (0) | 2023.04.18 |
댓글