[珂太練習]薬水の個数と加算(1/5 WED)
5週目の勉強で言及した薬の個数と加算!
思ったより早く解くことができたのですが、もっと効果的に解けるはずで残念でした.🥲
[今日の質問!#]
質問する
2つの整数の左から右までのすべての数の中で、約数の数に偶数の数を加えて、約数の数に奇数の数を加えて減算する解関数を実現します!
左が24、右が27なら
偶数の数の24、26、27を加算します.
薬水を除く個数は奇数の25です.
24-25+26+27 = 52
求める関数を構築する必要があります.🤓
ろんり
1)約数:分程度で0の数!(left % someNumber == 0)
2)ドアを回している1...左の数に約数を探します.
3)薬液が正しければ空の配列に入れる
4)空配列の数が偶数の場合は空変数sum+=約数,奇数の場合はsum-=約数となる.
『私が作ったコード』
ろんり
1)既存のレイアウトコードを変更するだけで済むので,map関数を用いてコンテナ内部の既存データを変換し,新しいコンテナを生成することができる.
[24,25,26,27]の配列は[+24,−25+26+27]!
2)1)で新しく作成した配列は,演算により1つの配列にマージできるためreduce関数を用いることができる.😎
これは、ある数値が一致するたびに、初期値を0の変数+1に設定し、個数を算出する方法です.
この方法はあまり面倒ではないようです!
思ったより早く解くことができたのですが、もっと効果的に解けるはずで残念でした.🥲
[今日の質問!#]
質問する
2つの整数の左から右までのすべての数の中で、約数の数に偶数の数を加えて、約数の数に奇数の数を加えて減算する解関数を実現します!
左が24、右が27なら
偶数の数の24、26、27を加算します.
薬水を除く個数は奇数の25です.
24-25+26+27 = 52
求める関数を構築する必要があります.🤓
ろんり
1)約数:分程度で0の数!(left % someNumber == 0)
2)ドアを回している1...左の数に約数を探します.
3)薬液が正しければ空の配列に入れる
4)空配列の数が偶数の場合は空変数sum+=約数,奇数の場合はsum-=約数となる.
『私が作ったコード』
func solution(_ left: Int, _ right: Int) -> Int {
var sum = 0
var aliquotArray = [Int]()
for number in left...right{
for i in 1...number {
if number % i == 0 {
aliquotArray.append(i)
}
if aliquotArray.count % 2 == 0 {
sum += number
} else {
sum -= number
}
aliquotArray.removeAll()
}
return sum
}
<高次関数を使用するコード>ろんり
1)既存のレイアウトコードを変更するだけで済むので,map関数を用いてコンテナ内部の既存データを変換し,新しいコンテナを生成することができる.
[24,25,26,27]の配列は[+24,−25+26+27]!
2)1)で新しく作成した配列は,演算により1つの配列にマージできるためreduce関数を用いることができる.😎
func solution2(_ left: Int, _ right: Int) -> Int {
return (left...right).map({ number -> Int in
var count = 0
for i in 1...number{
if number % i == 0 {
count += 1
}
}
return count % 2 == 0 ? number : -number
}).reduce(0,+)
}
また、私のように薬水を空の配列に入れて数えるのではなく、これは、ある数値が一致するたびに、初期値を0の変数+1に設定し、個数を算出する方法です.
この方法はあまり面倒ではないようです!
Reference
この問題について([珂太練習]薬水の個数と加算(1/5 WED)), 我々は、より多くの情報をここで見つけました https://velog.io/@marisol/코테연습-약수의-개수와-덧셈-15-WEDテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol