Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
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
Archives
Today
Total
관리 메뉴

욤찌의 개발 일기

[Programmers/Lv.1] 자릿수 더하기 본문

Coding Test

[Programmers/Lv.1] 자릿수 더하기

yyomzzi 2024. 3. 21. 00:59

 

Lv.1 연습문제

 

https://school.programmers.co.kr/learn/courses/30/lessons/12931

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


자릿수 더하기

문제 설명
자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

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

 

내 답안

func solution(_ n: Int) -> Int {
    var result = 0
    var str = String(n)
    for i in str {
        result += Int(String(i))!
    }
    return result
}

 

풀이

1.  n 의 각 자릿수의 숫자를 가져오기 위해 먼저 String으로 바꿔준다.

왜냐면 String 타입은 Character 타입 요소들의 Collection으로 간주되기 때문에 문자 하나하나를 Character 타입으로 가져올 수 있음!

(String은 Collection 프로토콜을 준수하고 있음)

 

2. String(n)의 값을 가진 변수 str for-in 반복문으로 Character 하나씩 꺼내서 다시 Int 형으로 바꿔준다.

여기서 루프 상수  i 는 타입이 Character이기 때문에 먼저 String으로 변환한 후에 Int로 변환 가능

String에서 Int로 형변환 할때는 옵셔널 타입이기 때문에 언래핑 해줘야함. 근데 여기서는 무조건 Int로 변환 될 것이라고 예상하기 때문에 강제언래핑 해줌 (반대로 Int에서 String으로 형변환할때는 옵셔널 아님. 무조건 변환 가능하기 땜시)

 

3. Int로 변환한 값을 result 변수에 더해서 다시 값을 할당한다.

 

다른 답안

func solution(_ n: Int) -> Int {
    return String(n).map { Int(String($0))! }.reduce(0) { $0 + $1 }
}

 

사실 예전에 Lv.0 에서 같은 문제를 풀었었고 이전에 통과 했던 답변 ,,

n을 String으로 형변환해서 Collection 으로 만들고 map 고차함수를 이용해서 클로져에 넘겨받는 Character 요소들을

String -> Int 형변환하고 강제언래핑 해준다. 그리고 reduce 고차함수로 0부터 요소 하나씩 더해준다.

고차함수를 꼭 사용할 필요는 없겠지만,, 이용하면 아주쥬주주 간단해질 수 있는 부분..!

 


예전에 풀었던 문제인데 ,, 너무 오랜만에 코테 공부를 했더니 고새 다 까먹어버린 ,,^^

넘 충격적이여서 블로깅 해본다🥹

사실 이전에 Lv.0 에서 풀었을 때는 그냥 다른 사람들이 Int타입에서 자릿수마다의 요소 하나씩 가져올 때 String으로 변환해서 사용하길래 아무 생각없이 그냥 따라 사용해서 기억에 안남았던듯 함..

왜 이렇게 사용하는가 정확히 알고싶어서 문자와 문자열에 대해 찾아봤고, Int 를 String으로 형변환하는 이유가 String이 Character 타입 요소들의 Collection 이라는 것을 알게 되었음! 그래서 마치 배열처럼 사용할 수 있던거였움!

아주 예전에 알고있었던 것 같은데 완전히 잊어버리고 있다가 이번에 다시 공부하게 되었다.

그래서 조만간 문자와 문자열 공식문서도 한 번 파볼 예정 ,,