안녕하세요. 개발 중인 정주입니다.
오늘은 프로그래머스(Lv.1) - 자연수 뒤집어 배열로 만들기 문제를 풀었습니다.
목차
Github
GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘
스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.
github.com
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12932
코딩테스트 연습 - 자연수 뒤집어 배열로 만들기
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 제한 조건 n은 10,000,000,000이하인 자연수입니다. 입출력 예 n return 12345
programmers.co.kr
풀이
input Int를 String으로 바꿔 뒤집어서 각 원소를 다시 Int로 바꾸면 됩니다.
이 문제를 통해 compactMap이라는 것을 알게 되었습니다.
compactMap은 1차원 배열에서 각 원소를 옵셔널 바인딩을 통해 nil을 제거합니다.
따라서 이번 문제에서 사용하면 아래와 같은 차이가 있습니다.
map을 이용한 풀이
return String(n).reversed().map { Int(String($0))! }
map은 Int로 변환할 때 nil이 생길 수 있기 때문에 직접 옵셔널 바인딩 또는 강제 언래핑을 해줘야 합니다.
compactMap을 이용한 풀이
return String(n).reversed().compactMap { Int(String($0)) }
compactMap은 옵셔널 바인딩을 해주기 때문에 변환만 해주면 됩니다.
전체 코드
func solution(_ n:Int64) -> [Int] {
// return String(n).reversed().map { Int(String($0))! }
return String(n).reversed().compactMap { Int(String($0)) }
}
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.