일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Android
- launchscreen
- react
- 앱 성능 개선
- ios
- privacyinfo.plist
- 스켈레톤 통합
- React Native
- react-native-fast-image
- 360도 이미지
- 리엑트 네이티브
- Skeleton UI
- requirenativecomponent
- 360도 이미지 뷰어
- Privacy manifest
- 리액트 네이티브
- native
- panorama view
- launch screen
- boilerplate 제거
- 스켈레톤 UI
- Native Module
- 네이티브
- React-Native
- 파노라마 뷰
- 리액트
- 3b52.1
- 라이브러리 없이
- 스플래시스크린
- 360도 뷰어
- Today
- Total
Neoself의 기술 블로그
알고리즘 지식 정리(10월 11일)[프로그래머스 레벨 1] 본문
평균 구하기
func getMean(_ arr: [Int]) -> Double {
return Double(arr.reduce(0,+))/Double(arr.count)
}
reduce 고차함수를 사용해 총합을 구한후, 인자 배열 내부 요소 개수를 나누어 평균값을 구하였습니다. 이때 반환 타입 Double임을 유의하여 타입을 수동 지정해주었습니다.
x만큼 간격이 있는 n개의 숫자
시간복잡도: O(n) = map 고차함수로 모든 요소 순회하기 때문
func x_n_other(_ x:Int, _ n:Int) -> [Int64] {
return Array(1...n).map { Int64($0 * x) }
}
1...n로 1~n까지의 범위를 생성한 후, Array 함수에 삽입하여, 1부터 n까지 순차적으로 요소가 들어간 배열을 생성합니다. 그 후 map 고차함수로 각 요소마다 주어진 x값을 곱해줍니다.
자릿수 더하기
시간복잡도: O(n = 입력숫자의 자릿수)
func addPlaceNum(_ n:Int) -> Int {
return String(n).map{Int(String($0))!}.reduce(0,+)
}
Int 타입의 인자를 map 고차함수 사용이 가능한 String 타입으로 변경한 후, 각 요소들마다 reduce함수로 일괄 덧셈 적용이 가능한 Int 타입으로 재변경을 해주었다.
문자열 내 p와 y의 개수
시간복잡도:
lowercased : O(n = 문자열 길이)
filter : O(n) * 2
func solution(_ s:String) -> Bool {
return s.lowercased().filter { $0 == "p" }.count == s.lowercased().filter { $0 == "y" }.count
}
문자열이 대문자와 소문자일 경우를 모두 대응해야하기 때문에, 조건을 늘리기보다 먼저 모든 문자를 소문자로 변경하여 변수를 제거하였다. 그 이후에 filter 고차함수와 count를 활용하여 각 문자의 개수를 구한 후 개수 일치 여부를 Bool 타입으로 반환하게끔 구성하였다.
자연수 뒤집어 배열로 만들기
시간복잡도:
String : O(n)
map : O(n = 입력값 자릿수)
reversed : O(n)
func flipNaturalNum(_ n:Int64) -> [Int] {
return String(n).map{Int(String($0))!}.reversed()
}
마찬가지로 map 고차함수 실행이 가능한 String 타입으로 변경해준 후, map 함수를 적용하였다. 이때 String을 map으로 각 요소를 순회하게 되면, $0은 Character 타입이 된다. Int 적용이 가능한 String으로 다시 변환해준 후, Int로 다시 변환. 이 때 String이 Int로 변경하지 못하는 글자일 수도 있기 때문에 Int()는 옵셔널 타입이 되는데, !로 이를 막아준다. 마지막으로 Int 타입 요소 배열로 변환을 마치면. reversed 함수로 순서 뒤집기
'개발지식 정리 > 알고리즘' 카테고리의 다른 글
알고리즘 지식 정리(10월 15일)[프로그래머스 레벨 1] (2) | 2024.10.15 |
---|---|
알고리즘 지식 정리(10월 14일)[프로그래머스 레벨 1] (0) | 2024.10.14 |
알고리즘 지식 정리(10월 13일)[프로그래머스 레벨 1] (0) | 2024.10.14 |
알고리즘 지식 정리(10월 12일)[프로그래머스 레벨 1] (2) | 2024.10.12 |
알고리즘 지식 정리(10월 8일)[프로그래머스 레벨 2] (1) | 2024.10.08 |