728x90
백준 1978번 문제와 거의 유사하다.
소수를 찾아내고, 소수 중 가장 작은 값, 소수를 전부 더한 값 등을 출력하면된다.
1978번을 풀고 바로 풀어서 그런지 정말 금방 풀었다.
이 문제를 풀면서 생각한 논리적 흐름은
- 처음 값과 마지막 값을 입력받고
- 그 사이에 있는 Int 값들을 전부 저장한다.
- 그 안에 있는 값들을 기준으로 소수 값인지를 판단한다.
- 소수 값이 맞다면 array2에 append 해준다.
- array2에는 소수값만 모여있는 배열이 완성된다.
- 배열에 값이 존재하지 않으면 -1 출력
- 배열에 값이 존재한다면 배열 내 원소들의 총합과 최소값을 출력한다.
* 2581번
let bottom = Int(readLine()!)!
let ceiling = Int(readLine()!)!
var array: Array<Int> = []
var array2: Array<Int> = []
var count = 0
var check = true
for i in bottom...ceiling {
array.append(i)
}
for i in 0..<array.count {
if array[i] == 1 {
check = false
}else {
for j in 2..<array[i] {
if array[i] % j == 0 {
check = false
}
}
}
if check == true {
array2.append(array[i])
}
check = true
}
var total = array2.reduce(0, +)
if array2.count == 0 {
print(-1)
} else {
print(total)
print(array2.min()!)
}
정리(Today I Learned)
- reduce는 배열 안에 원소들의 사칙연산을 행하기 좋은 함수이다. 알고리즘 문제 풀던 초기에 썼었던 것으로 기억하는데... 그 후로 안쓰다보니 또 까먹었다. 유용하지만 자주 까먹을 수 있는 함수들은 따로 정리를 해두어야겠다.
'TIL > 알고리즘 공부' 카테고리의 다른 글
백준 1929번 Swift 알고리즘 연습 (1) | 2022.09.01 |
---|---|
백준 11653번 Swift 알고리즘 연습 (0) | 2022.09.01 |
백준 1978번 Swift 알고리즘 연습 (0) | 2022.08.30 |
백준 10757번 Swift 알고리즘 연습 (0) | 2022.08.28 |
백준 2839번 Swift 알고리즘 연습 (0) | 2022.08.28 |