반응형
1. 모음 제거
영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
제한사항
- my_string은 소문자와 공백으로 이루어져 있습니다.
- 1 ≤ my_string의 길이 ≤ 1,000
입출력 예
my_string | result |
"bus" | "bs" |
"nice to meet you" | "nc t mt y" |
입출력 예 설명
입출력 예 #1
- "bus"에서 모음 u를 제거한 "bs"를 return합니다.
입출력 예 #1
- "nice to meet you"에서 모음 i, o, e, u를 모두 제거한 "nc t mt y"를 return합니다.
제출 답안
import Foundation
func solution(_ my_string:String) -> String {
// Set(집합 자료형), 특정 문자 타입의 값들을 저장, 중복 허용X, 순서 없음
let s1: Set<Character> = ["a","e","i","o","u"]
// 모음을 제거한 문자열 반환
return my_string.filter { !s1.contains($0) }
}
https://developer.apple.com/documentation/swift/set
2. 문자열 정렬하기(1)
문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 100
- my_string에는 숫자가 한 개 이상 포함되어 있습니다.
- my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다. - - -
입출력 예
my_string | result |
"hi12392" | [1, 2, 2, 3,9] |
"p2o4i8gj2" | [2, 2, 4, 8] |
"abcde0" | [0] |
입출력 예 설명
입출력 예 #1
- "hi12392"에 있는 숫자 1, 2, 3, 9, 2를 오름차순 정렬한 [1, 2, 2, 3, 9]를 return 합니다.
입출력 예 #2
- "p2o4i8gj2"에 있는 숫자 2, 4, 8, 2를 오름차순 정렬한 [2, 2, 4, 8]을 return 합니다.
입출력 예 #3
- "abcde0"에 있는 숫자 0을 오름차순 정렬한 [0]을 return 합니다.
제출 답안
func solution(_ my_string: String) -> [Int] {
// 문자열에서 숫자만 추출하고 Int로 변환
let numbers = my_string.compactMap { $0.wholeNumberValue }
// 오름차순 정렬
return numbers.sorted()
}
https://developer.apple.com/documentation/swift/character/wholenumbervalue
3. 숨어있는 숫자의 덧셈(1)
문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ my_string의 길이 ≤ 1,000
- my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.
입출력 예
my_string | result |
"aAb1B2cC34oOp" | 10 |
"1a2b3c4d123" | 16 |
입출력 예 설명
입출력 예 #1
- "aAb1B2cC34oOp"안의 한자리 자연수는 1, 2, 3, 4 입니다. 따라서 1 + 2 + 3 + 4 = 10 을 return합니다.
입출력 예 #2
- "1a2b3c4d123Z"안의 한자리 자연수는 1, 2, 3, 4, 1, 2, 3 입니다. 따라서 1 + 2 + 3 + 4 + 1 + 2 + 3 = 16 을 return합니다.
유의사항
- 연속된 숫자도 각각 한 자리 숫자로 취급합니다.
제출 답안
import Foundation
func solution(_ my_string: String) -> Int {
// 문자열에서 숫자만 추출하고 정수로 변환 후 합산
return my_string.compactMap { $0.wholeNumberValue }.reduce(0, +)
}
4. 소인수분해
소인수분해란 어떤 수를 소수들의 곱으로 표현하는 것입니다. 예를 들어 12를 소인수 분해하면 2 * 2 * 3 으로 나타낼 수 있습니다. 따라서 12의 소인수는 2와 3입니다. 자연수 n이 매개변수로 주어질 때 n의 소인수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 2 ≤ n ≤ 10,000
입출력 예
n | result |
12 | [2, 3] |
17 | [17] |
420 | [2, 3, 5, 7] |
입출력 예 설명
입출력 예 #1
- 12를 소인수분해하면 2 * 2 * 3 입니다. 따라서 [2, 3]을 return합니다.
입출력 예 #2
- 17은 소수입니다. 따라서 [17]을 return 해야 합니다.
입출력 예 #3
- 420을 소인수분해하면 2 * 2 * 3 * 5 * 7 입니다. 따라서 [2, 3, 5, 7]을 return합니다.
제출 답안
import Foundation
func solution(_ n: Int) -> [Int] {
var n = n // 입력된 숫자 n을 변수로 사용
var result: [Int] = [] // 소인수를 저장할 배열
var divisor = 2 // 나눗셈을 시작할 가장 작은 소수 (2부터 시작)
// n이 1이 될 때까지 반복
while n > 1 {
// divisor가 n의 소인수인지 확인
if n % divisor == 0 {
result.append(divisor) // 소인수를 결과 배열에 추가
// n에서 divisor로 나누어 떨어지는 모든 부분 제거 (중복 제거)
while n % divisor == 0 {
n /= divisor
}
}
divisor += 1 // 다음 숫자로 이동
}
return result // 소인수 배열 반환
}
반응형