반응형
문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
입출력 예 #1
- 다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다.
수 약수 약수의 개수
13 | 1, 13 | 2 |
14 | 1, 2, 7, 14 | 4 |
15 | 1, 3, 5, 15 | 4 |
16 | 1, 2, 4, 8, 16 | 5 |
17 | 1, 17 | 2 |
- 따라서, 13 + 14 + 15 - 16 + 17 = 43을 return 해야 합니다
나의 풀이
func solution(_ left:Int, _ right:Int) -> Int {
var addResult = [Int]()
var subResult = [Int]()
var result: Int
var num: Int
var divisor = [Int]()
var arr = [Int]()
for a in left...right {
arr.append(a)
}
arr.forEach {
divisor = []
for i in 1...$0 {
if $0 % i == 0 {
divisor.append(i)
}
}
if divisor.count % 2 == 0 {
addResult.append($0)
} else {
subResult.append($0)
}
}
result = addResult.reduce(0,+) - subResult.reduce(0,+)
return result
}
모범 풀이 예1)
func solution(_ left: Int, _ right: Int) -> Int {
return (left...right).map { i in (1...i).filter { i % $0 == 0 }.count % 2 == 0 ? i : -i }.reduce(0, +)
}
모범 풀이 예2)
import Foundation
func solution(_ left:Int, _ right:Int) -> Int {
var answer = 0
for number in left...right{
if floor(sqrt(Double(number))) == sqrt(Double(number)) {
answer -= number
} else {
answer += number
}
}
return answer
}
round() 함수 & ceil() 함수 & floor() 함수 정리
더보기
// 1. 수소점 올림
ceil(5.1) // 6
ceil(5.3) // 6
ceil(5.7) // 6
ceil(6.0) // 6
ceil(6.9) // 7
// 2. 소수점 버림
floor(5.1) // 5
floor(5.3) // 5
floor(5.7) // 5
floor(6.0) // 6
floor(6.9) // 6
// 3. 소수점 반올림
round(5.1) // 5
round(5.3) // 5
round(5.7) // 6
round(6.0) // 6
round(6.9) // 7
sqrt함수 정리
더보기
import Foundation
let value = 9.0
sqrt(value) // 3.0
반응형
'코딩 테스트' 카테고리의 다른 글
코딩테스트 - [day3] 문자열에서 특정 문자 개수 찾기 (2941:크로아티아 알파벳) (0) | 2022.09.06 |
---|---|
코딩 테스트 - [day3] 백준: 1110 - 더하기 사이클 (0) | 2022.09.05 |
코딩 테스트(swift) - 스위프트 문법 정리 (2) | 2022.08.01 |
배열 값 넣기 (0) | 2022.04.06 |
백준 - 2588문제(wholeNumberValue개념설명) (0) | 2022.04.06 |