🔴 문제
🔵 풀이 1 - String(repeating:count:), 연산자 오버로딩
문제를 보자마자 String(repeating:count:) 을 이용해 풀어야겠다고 생각했다.
'+' 연산자 오버로딩을 활용했고, 문제 없이 실행되었다.
<코드>
func solution(_ n:Int) -> String {
return String(repeating: "수박" , count: n/2 ) + String(repeating:"수", count: n % 2)
}
다른 사람의 풀이도 내 풀이와 대체로 유사했다.
🔵 풀이 2 - 삼항연산자 활용
func solution(_ n:Int) -> String {
return "\(String(repeating: "수박", count: n / 2))\(n % 2 == 0 ? "" : "수")"
}
🔵 풀이 3 - map, reduce 활용
func solution(_ n:Int) -> String {
return (0..<n).map{($0%2==0 ? "수":"박")}.reduce("", +)
}
❓풀이 1 vs 풀이 3 속도 비교
나도 map, reduce 을 활용해 풀어볼까 생각도 했었는데, 0..<n까지 배열을 만들고, 일일이 2로 나눠보는 과정이 코드 연산 시간을 증가시킬 것 같아 시도하지 않았다.
그렇다면 실제로 속도 차이가 있는지 검증해보겠다.
풀이 1 | 풀이 2 |
예상대로 풀이 3의 연산 속도가 더 느린 것을 확인할 수 있었다.