목록백준 알고리즘 문제 기록/약수, 배수와 소수 (6)
Where who wants to meet someone
난이도 브론즈 I 문제 https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 내 답안 var n = Int(readLine()!)! // 반복문을 하나만 사용할 것이라 나누는 수를 나타낼 프로퍼티 i 생성(초기 2) var i = 2 // n이 1이 될 때까지 반복 while n != 1 { // n을 i로 나눈 나머지가 0이라면(소인수분해가 정상적으로 진행되면) if n % i == 0 { // n을 i로 나눈 몫으로 변경 및 현재 나누는 수 출력 n /= i print(i) } else { // 나머지가 0이 아니라면 i값 증가 i += 1 } } - 소인수분해는 ..
난이도 브론즈 II 문제 https://www.acmicpc.net/problem/2581 2581번: 소수 M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. www.acmicpc.net 내 답안 let m = Int(readLine()!)! let n = Int(readLine()!)! // 소수를 담을 primeNumberArr var primeNumberArr: [Int] = [] // m부터 n까지 반복문 진행 for i in m...n { // 약수의 개수를 담을 프로퍼티 count 초기화 var count = 0 // 1부터 i까지 반복문 진행 for j ..
난이도 브론즈 II 문제 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net 내 답안 let n = Int(readLine()!)! let input = readLine()!.split(separator: " ").map { Int($0)! } // 소수의 개수를 담을 프로퍼티 sum var sum = 0 // input으로 받은 값으로 돌아야 하니 forEach 사용 input.forEach { value in // 매번 약수의 개수를 담는 count 초기화 var count = 0 // 1부터 value까지 돌면..
난이도 브론즈 I 문제 https://www.acmicpc.net/problem/9506 9506번: 약수들의 합 어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라. www.acmicpc.net 내 답안 // -1을 EndSign으로 보고 while문 진행 while true { let input = Int(readLine()!)! // 입력값이 -1이라면 종료 if input == -1 { break } // 1은 모든 수의 약수이기 때문에 sum과 text에 미리 추가 var sum = 1 var text = "\(input) = 1" // 1을 제외하고..
난이도 브론즈 III 문제 https://www.acmicpc.net/problem/2501 2501번: 약수 구하기 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. www.acmicpc.net 내 답안 let input = readLine()!.split(separator: " ").map { Int($0)! } let n = input[0] let k = input[1] var count = 0 // 반복문을 통해 1부터 n까지 돌면서 약수 파악 for i in 1...n { // 약수가 맞다면 count 증가 if n % i == 0 { count += 1 } // 현재 count가 k와 같다면, k번째 작은 수이기 때문에 출력하..