본문 바로가기
🍎 Swift/Programmers

[👾 Programmers] 17. 자연수 뒤집어 배열로 만들기

by 솔비님 2024. 6. 21.

1. 문제 설명 (📎Link)

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

 

2. 제한사항

n은 10,000,000,000이하인 자연수입니다.


📝 문제

func solution(_ n:Int64) -> [Int] {
	return []
}

 

 

💻 내가 푼 방법(테스트 성공)

func solution(_ n:Int64) -> [Int] {
    //배열로 return이 필요하니까 빈 배열 선언
    var arr: [Int] = []
    
    //아래에서 자세히 설명
    arr = String(n).map{Int(String($0))!}.reversed()
    
    return arr
}

 

💡 해당 코드를 순서대로 설명

arr = String(n).map{Int(String($0))!}.reversed()

 

우선 전달 받은 자연수 n이 12345이라고 한다면,

 

1️⃣ String(n) : 형변환을 통해 각 자리의 숫자를 개별적인 문자로 접근 할 수 있게 해준다

     12345 → "12345"

 

2️⃣ map{Int(String($0))!} : map 함수는 String(n) 문자열의 요소를 하나씩 순회한다

     map 함수를 통해 다시 String($0) 처리하는 이유는 각 문자를 개별적으로 정수로 변환하기 위함이다

     "12345" → "1", "2", "3", "4", "5"

     이후 Int(String($0)) Int로 다시 형변환을 해줌으로서 각 문자열은 정수로 변환된다

     "1","2","3","4","5" → '1', '2', '3', '4', '5'

      '!'로 강제 언래핑 진행. 각 문자가 항상 숫자이므로 변환이 실패하지 않을 것을 가정하고 사용

 

3️⃣ .reversed() : 배열의 순서를 뒤집어서 저장한다


🔎 의문점과 공부한 것

1. 형 변환 시 순서와 어떻게 접근하는지에 대해서 더 명확해 진것 같다

2. map 함수를 좀 더 잘 활용할 수 있게 된 것 같다

3. 강제 언래핑에 대해 더 공부해야 되겠다

4. reversed() 함수가 배열을 뒤집는다는 사실을 공부했다

5. 알고리즘이 조금씩 어려워지는 느낌..