Devlog👩🏻💻/Algorithm
[Swift] 프로그래머스 Lv.1 : 자릿수 더하기
yujjne
2024. 2. 13. 19:27
문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.
제한사항
- N의 범위 : 100,1000,000이하의 자연수
입출력 예
N | return |
123 | 6 |
987 | 24 |
입출력 예 설명
입출력 예 #1
문제의 예시와 같습니다.
입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.
✏️ 풀이
1. 정수를 문자열로 변환 : String(n)
func solution(_ n: Int) -> Int {
var answer:Int = 0
for i in String(n) {
answer += Int(String(i))!
}
return answer
}
- n을 문자열로 변환하여 순회
- 정수로 다시 변환하여 합 누적
2. 고차함수 사용
func solution1(_ n: Int) -> Int {
var answer:Int = 0
answer = String(n).reduce(0, {$0 + Int(String($1))!})
// answer = String(n).map{Int(String($0))! }.reduce(0,+)
return answer
}
- reduce : 모든 요소 결합하여 단일 값으로 반환
String(n).reduce(0, {$0 + Int(String($1))!})
0: 초기값, $0: 누적값, $1: 배열의 각 요소
각 문자를 정수로 변환한 값과 이전까지의 합계를 더한 값 반환
- map : 각 요소 변환하여 새로운 컬렉션 생성
String(n).map { Int(String($0))! }
$0: 배열의 요소인 문자
문자열의 각 문자를 정수로 변환하여 배열 생성 -> reduce로 배열의 요소 누적하여 합 반환
아직은 고차함수의 사용이 헷갈려서 자세히 정리해보았다.
자주 사용하면서 익숙해지는 날이 오길!