0. TIL
잘한 점: 퇴근 후에 남아서 공부를 했다! 현재 시각 9시 20분...퀭 🫠
개선점 : 오늘 업무 전, 중, 후 버린 시간이 너무 많다. 컨디션 issue가 있긴 했지만 체력 관리해서 더 집중하기
배운 점: 앞으로 함수 / 기능을 나눠서 구현해보자
1. 데일리 루틴
cs 공부
질문 : 트리 자료구조의 종류(예: 이진 트리, 이진 탐색 트리, AVL 트리)을 설명해주세요.
답변 : 트리 자료구조는 계층적인 데이터 구조로 여러 종류가 있습니다.
주요 트리 자료구조와 그 특징을 요약하면 다음과 같습니다
이진 트리: 각 노드가 최대 두 개의 자식을 가지는 기본 트리 구조.
이진 탐색 트리 (BST): 왼쪽 자식 노드는 부모보다 작고, 오른쪽 자식 노드는 부모보다 큰 트리. 평균적으로 O(log n)의 시간 복잡도를 가집니다.
AVL 트리: 노드의 서브트리 높이 차이가 1 이하로 유지되도록 자가 균형을 유지하는 트리.
레드-블랙 트리: 노드가 색상을 가지며, 삽입과 삭제 시 균형을 유지하는 자가 균형 이진 탐색 트리.
힙: 최대값 또는 최소값을 빠르게 찾기 위해 사용되는 완전 이진 트리.
트라이 (Trie): 문자열이나 키를 효율적으로 저장하고 검색하는 특수한 트리.
이들은 각각 특정 용도와 성능을 위해 설계되었으며, iOS 개발에서도 다양한 상황에서 사용됩니다.
1일 1커밋
📜 문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.
⌨️ 입출력 예
✏️ 나의 코드
func solution(_ n:Int, _ m:Int) -> [Int] {
var min = 0
var max = 0
var maxNum = n < m ? m : n
for i in 1...maxNum{
if n % i == 0 && m % i == 0{
max = i
}
}
for i in 1...maxNum{
for j in 1...maxNum{
if n * i == m * j{
min = m * j
return [max, min]
}
}
}
return [max, min]
}
공식이 기억이 안나서 노가다로 구현한 코드 (쩝)
📚 개선 코드
func solution(_ n:Int, _ m:Int) -> [Int] {
var gcdNum = gcd(n, m)
var lcmNum = n * m / gcd(n, m)
return [gcdNum, lcmNum]
}
func gcd(_ n: Int, _ m: Int) -> Int {
return m == 0 ? n : gcd(m, n % m)
}
공식을 알고나서 적용한 코드
간단하게 구현할 수 있었다.
여지껏 제출한 코드는 한 함수 안에 기능을 정의했었는데
(물론 쉬운 문제라 가능했던)
이렇게 나눠서 구현하니 가독성이 좋아진 느낌
swift 강의
는 오늘은 생략
'TIL' 카테고리의 다른 글
240910 TIL | 병렬처리, 동시처리, 멀티코어, 3진법 뒤집기, radix (0) | 2024.09.10 |
---|---|
240907 TIL | 동시성 프로그래밍, 그리디 알고리즘, 예산 (0) | 2024.09.07 |
240828 TIL | 문자열 다루기 기본, 배열, 스택 등등 (2) | 2024.08.28 |
240821 TIL | 이진 탐색, 전화번호 가리기, repeating, suffix (0) | 2024.08.23 |
240820 TIL | 정렬 알고리즘, swift의 고차함수 (0) | 2024.08.20 |