반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 "프로그래머스(Lv.2) - k진수에서 소수 개수 구하기" 문제를 풀었습니다.
Github
문제 링크
풀이
이번 문제는 소수 찾기 문제입니다. 문자열 처리를 곁들인...
1. k진수로 변환 시키기
let number = String(n, radix: k)
정수 n을 k진수로 변환 시켜야 합니다.
String을 이용해 k 진수로 변환 시켜 줍니다.
2. 0을 구분자로 나눕니다.
0을 구분자로 문자열을 분리합니다.
저는 문제를 대충 읽어 약간 헤맸는데요.
P0, 0P가 그냥 0 옆에 있는 숫자인 줄 알았는데 왼쪽, 오른쪽에 아무것도 없는 경우더라고요.
읽자마자 바로 0을 구분자로 split 해야겠구나 떠올렸습니다.
0을 구분자로 나누고 00인 경우에는 ""가 들어가 Int 변환 시 런타임 에러가 발생할 수 있으므로 제외 시켜 줍니다.
3. 소수인지 판단합니다.
나눠진 수가 소수인지 판단합니다.
소수의 개수를 카운트 해주고 return 합니다.
전체 코드
import Foundation
func isPrime(_ number: Int) -> Bool {
guard number > 3 else {
return number == 1 ? false : true
}
for i in 2...Int(sqrt(Double(number))) {
if number % i == 0 { return false }
}
return true
}
func solution(_ n:Int, _ k:Int) -> Int {
let number = String(n, radix: k)
print("number: \(number)")
let splitNum = number.components(separatedBy: "0").filter { $0 != "" }
print("splitNum: \(splitNum)")
let count = splitNum.filter { isPrime(Int($0)!) }.count
return count
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형