백준 2577번 문제 : 숫자의 개수
3개의 자연수를 입력받은 후, A x B x C 그 결과값에 0~9까지의 숫자가 각각 몇 번씩 쓰였는지 구하는 문제
import Foundation
let numbers: [Int] = [0, 1, 2, 3]
var doubledNumbers = numbers.map { $0 * 2 }
print(doubledNumbers)
//OUTPUT [0, 2, 6, 8]
import Foundation
let numbers: [Int] = [1, 2, 3, 4, 5]
var sum = numbers.reduce(0, +)
print(sum)
//OUTPUT : 15
import Foundation
let numbers: [Int] = [10, 3, 20, 4, 15]
var filtered = numbers.filter{ $0 > 5}.sorted()
print(filtered)
//OUTPUT : [10, 15, 20]
let numbers: [Int] = [10, 3, 20, 4, 15]
.filter { $0 > 5}
.map { $0 * 10}
print(numbers)
//OUTPUT : [100, 200, 150]
1차원 배열에서 nil을 제거하고 옵셔널 바인딩을 하고싶을 때 compactMap을 사용한다.
import Foundation
let randomValue = [1, nil, 3, nil, 5, 6, 7]
let compactMapArray = randomValue.compactMap { $0 }
print(compactMapArray)
//OUTPUT : [1, 3, 5, 6, 7]
var inputNumbers: [Int] = []
var counts: [Int] = []
for _ in 1...3 {
inputNumbers.append(Int(readLine()!)!)
}
let multiplied = inputNumbers.reduce(1, *)
let splittedByDigit = String(describing: multiplied).compactMap { Int(String($0)) }
for i in 0...9 {
let counted = splittedByDigit.filter { $0 == i }.count
counts.append(counted)
}
counts.forEach { print($0) }
let input1 = Int(readLine()!)!
let input2 = Int(readLine()!)!
let input3 = Int(readLine()!)!
let sum = String(input1 * input2 * input3)
var arr: [Character] = []
for i in sum {
arr.append(i)
}
for i in 0...9 {
var a = arr.filter{ Int(String($0))! == i}
print(a.count)
}
import Foundation
let caseCount = Int(readLine()!)!
for _ in 1...caseCount {
let input = readLine()!.split(separator: " ").map{Double(String($0))!}
var average = 0.0
for i in input[1...] {
average += i
}
average /= input[0]
let overAverageCnt = Double(input[1...].filter{$0 > average}.count)
print(String(format: "%.3f", overAverageCnt / input[0] * 100) + "%")
}
긁어온 코드를 좀 더 내 스타일로 고쳤다
import Foundation
let caseCnt = Int(readLine()!)!
for _ in 1...caseCnt {
let result = readLine()!.split(separator: " ").map{Double($0)!}
let studentCnt = result[0]
var totalScore = 0.0
for i in result[1...] {
totalScore += i
}
var average = totalScore / studentCnt
let overAverageCnt = Double(result[1...].filter{$0 > average}.count)
print(String(format: "%.3f", overAverageCnt / studentCnt * 100) + "%")
}