TIL/알고리즘 공부

백준 1978번 Swift 알고리즘 연습

여의도사노비 2022. 8. 30. 18:06
728x90

입력받은 값 중에 소수가 몇개인지 확인하는 문제이다.

소수의 특성을 구할 수 있는 코드의 로직은 다양하게 적용이 가능할 것 같아서

문제가 자체가 어렵진 않았다.

 

이 문제를 풀면서 생각한 논리적 흐름은

  1. 입력받은 값이 1이라면 이는 소수가 아니기 때문에 제외한다.
  2. 그리고 1을 제외한(2부터) array[i]보다 작은 정수 값들로 array[i]를 나눴을 때 나머지가 0이라면
  3. 그 값은 자신을 제외한 값으로도 나뉘는 것이기 때문에 소수가 아니다.
  4. 소수가 아닌 경우 check을 0으로 만들어주어 count에 영향을 주지 않는다.
  5. 소수인 경우 check이 그대로 1을 유지하기 때문에 count에 +1 해준다.

 

 

* 1978번

let a = Int(readLine()!)!
var count = 0
var check = 1
var array = readLine()!.split(separator: " ").map{Int($0)!}
for i in 0..<array.count {
    if array[i] == 1 {
        check = 0
    }else {
        for j in 2..<array[i] {
            if array[i] % j == 0 {
                check = 0
            }
        }
    }
    if check == 1 {
        count += 1
    }
    check = 1
}
print("\(count)")

 

정리(Today I Learned)

  1. 없음