Where who wants to meet someone
약수의 개수와 덧셈 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/77884
내 답안 / 다른 사람들의 답안
import Foundation
func solution(_ left:Int, _ right:Int) -> Int {
var result = [Int]()
for i in left...right {
let miniNum = Int(sqrt(Double(i)))
miniNum * miniNum == i ? result.append(-i) : result.append(i)
}
return result.reduce(0, +)
}
- 규칙을 봤을 때, 약수의 개수가 홀수개인 수는 제곱으로 가능한 수인 것 같았다.
- sqrt로 제곱수를 구하고 그 수를 제곱했을 때 원래 수와 같다면 음수를, 다르다면 양수를 result에 담아 reduce로 결과를 반환했다.
// 풀이 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
}
점수: +1
'프로그래머스 알고리즘 문제 기록 > Lv. 1' 카테고리의 다른 글
부족한 금액 계산하기 (0) | 2024.05.16 |
---|---|
문자열 내림차순으로 배치하기 (0) | 2024.05.16 |
내적 (0) | 2024.05.15 |
수박수박수박수박수박수? (0) | 2024.05.15 |
가운데 글자 가져오기 (0) | 2024.05.14 |