본문 바로가기

 𝗔𝗣𝗣𝗟𝗘/ALGORITHM

알고리즘 복습(03)

정수 내림차순으로 배치하기

함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요.

   

 

예를들어 n이 118372면 873211을 리턴하면 됩니다.

// Code(01) - 정답 

func solution(_ n:Int64) -> Int64 {
    var str = String(n)
		// 입력된 정수 **n**을 문자열로 변환(정수의 각 자릿수를 문자로 분리)

    var sorted = String(str.sorted(by: >))
		// sorted(by: >): ****내림차순으로 정렬하기 위해 **>** 연산자 사용
		// String(): 정렬된 문자열을 다시 문자열로 변환

    return Int64(sorted)!
		// 정렬된 문자열을 다시 정수형으로 변환한 후 반환
}

 


 

하샤드 수 

양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요.

// Code(01) - 정답 

func solution(_ x:Int) -> Bool {
  var sum = 0

	// for문 사용을 위해 x를 string()으로 변환 
  for i in String(x) {

		// 반복문을 통해 한 글자씩 다시 **Int로 변환하여 더하기(sum)**
    guard let number = Int(String(i)) else { break }
    sum += number
  }

	// x를 **총 합(sum)으로 나누어 보고 0인지 확인**
  return x % sum == 0
}

 


 

두 정수 사이의 합 

두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.

 

예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴한다.

// Code(01) - 정답 

func solution(_ a:Int, _ b:Int) -> Int64 {
		// 정수형 변수 **answer**를 선언하고 초기값을 0으로 설정
    // 두 정수 **a**와 **b** 사이의 모든 정수를 합산한 결과 저장 
    var answer = 0
    
		// 두 정수 **a**와 **b**를 기준으로 작은 값과 큰 값을 기준으로 범위를 설정
		// **a**부터 **b**까지의 범위 설정
		// 설정된 범위를 순회하며 변수 **i**에 각각 값을 할당
    for i in a < b ? a...b : b...a {
		// 순회하면서 각 정수 **i**를 **answer**에 더하기
		// **a**와 **b** 사이의 모든 정수를 합산
        answer += i
    }
    
    return Int64(answer)
}

 

 

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