본문 바로가기

 𝗔𝗣𝗣𝗟𝗘/ALGORITHM

알고리즘 복습(02)

배열 두 배 만들기

정수 배열 numbers가 매개변수로 주어집니다.  numbers의 각 원소에 두배한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.

// Code(01) - 정답 

function solution(numbers) {
    return numbers.map((num) => num * 2);
}

 

 


 

약수의 합 

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

// Code(01) - 정답 

func solution(_ n:Int) -> Int {
    return n != 0 ? (1...n).filter{n % $0 == 0}.reduce(0){$0 + $1} : 0
}

 


 

나머지가 1이 되는 수 찾기 

자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.

// Code(01) - 정답 

import Foundation

func solution(_ n:Int) -> Int {

	// 2...n : 2부터 n까지의 모든 수에 대해 반복
    for num in 2...n  {
		// 만약 나머지가 1이면 해당 수 num을 반환
        if n % num == 1 {
            return num
        }
    }
    return 1
}

 


x만큼 간격이 있는 n개의 숫자 

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

// Code(01) - 정답 

func solution(_ x:Int, _ n:Int) -> [Int64] {
    var array = [Int64]()
    
    // 1부터 n까지 반복
    for i in 1...n {
        // 각 반복에서 x에 현재 반복 횟수 i를 곱한 값을 array에 Int64 형식으로 추가
        array.append(Int64(x * i))
    }
    
    return array
}

 


 

평균 구하기 

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

// Code(01) - 정답 

func solution(_ arr:[Int]) -> Double {
    var array = [Int64]()
    
	// 주어진 배열 arr의 각 요소를 Int64 타입으로 변환하여 array 배열에 추가
    for num in arr {
        array.append(Int64(num))
    }
    
	// array.reduce(0, +): array 배열의 요소들을 합산
	// Double() / Double(): array 배열의 요소들의 개수로 나누어 평균 구하기
    return Double(array.reduce(0, +)) / Double(array.count)
}

 


 

자릿수 더하기 

정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.

 

예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

제한사항: N의 범위 : 100,000,000 이하의 자연수

 

// Code(01) - 정답 

import Foundation

func solution(_ n: Int) -> Int {
    var answer:Int = 0
    
		// String(n): n을 문자열로 변환
    for i in String(n) {
				// 문자열을 순회하면서 각 문자를 다시 정수로 변환
        answer += Int(String(i))!
    }
    
    return answer
}

 

💡 n이 1234라면 String(n)을 사용해 "1234" 문자열로 변환

     for 루프를 통해 문자열 "1234"를 순회하며 각 문자의 합을 구하고 다시 정수로 변환

 


 

문자열을 정수로 바꾸기 

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.

// Code(01) - 정답 

func solution(_ s:String) -> Int {
    return Int(s)!
}

 


 

자연수 뒤집어 배열로 만들기 

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

// Code(01) - 정답 

func solution(_ n:Int64) -> [Int] {
    return String(n).map{ Int(String($0))! }.reversed()
}

 


 

정수 제곱근 판별 

임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.

n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.

 

제한 사항: n은 1이상, 50000000000000이하인 양의 정수

// Code(01) - 정답 

import Foundation

func solution(_ n: Int64) -> Int64 {
    let x = Int64(sqrt(Double(n)))
    return x * x == n ? (x + 1) * (x + 1) : -1
}

 

Double(n): 정수 n을 부동 소수점 수 (Double)로 변환

sqrt(...): 주어진 값의 제곱근을 계산

Int64(...): 결과를 다시 Int64 유형의 정수로 변환

Recent Posts
Visits
Today
Yesterday
Archives
Calendar
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31