0. 회고 및 개선점 📝
- 느낀 점:
- 델리게이트 패턴을 더 확실히 이해하게 됨
- cs -> 가랑비에 젖는 효과가 아주 조금 나타나는 중
- swift 메서드가 아직 익숙치 않아서 사용에 어려움을 느끼는 중 ㅜㅜ~
- 잘한 점 : 불금, 오후 11시 반에 스카에서 이걸 쓰고 있다는 거 자체가 잘함 ㅠ
- 개선 점 : 주말엔 꼭 코테 복습하기!!!!!!!!
- 앞으로 :
- 코테 복습
1. 오늘 배운 내용 📘 (데일리 루틴)
swift 강의
강의명 : 델리게이트 패턴 톺아보기
- 키워드: 델리게이트 패턴, 프로토콜
- 개요:
- 델리게이트는 객체간의 커뮤니케이션을 위한 것이고,
방법은 대리자를 프로토콜로 진행!
- 델리게이트는 객체간의 커뮤니케이션을 위한 것이고,
1일 1커밋
📜 문제 설명
숫자로 이루어진 문자열 t와 p가 주어질 때, t에서 p와 길이가 같은 부분문자열 중에서, 이 부분문자열이 나타내는 수가 p가 나타내는 수보다 작거나 같은 것이 나오는 횟수를 return하는 함수 solution을 완성하세요.
예를 들어, t="3141592"이고 p="271" 인 경우, t의 길이가 3인 부분 문자열은 314, 141, 415, 159, 592입니다. 이 문자열이 나타내는 수 중 271보다 작거나 같은 수는 141, 159 2개 입니다.
⌨️ 입출력 예
t p result
"3141592" "271" 2
✏️ 나의 코드
import Foundation
func solution(_ t:String, _ p:String) -> Int {
//1. p의 문자열 길이를 구한다.
let leg = Int(p[p.startIndex])
var arr: [String] = []
var to = t.startIndex
var from = t.endIndex
//2. t를 1의 길이가 되는 문자열로 쪼갠다.
for i in 0..<5{
// ❌ from이 i값의 변화에 따라 변화하지 않음
var from = t.startIndex
var to = t.index(from, offsetBy: leg)
var str = t[from..<to]
arr.append(String(str))
print(arr)
}
//3. 2와 p를 Int로 변환
//4. 3과 p를 비교해서 작거나 같으면 count +1 한다.
return 0
}
하다가 포기 ㅎ
📚 개선 코드
import Foundation
func solution(_ t: String, _ p: String) -> Int {
// 1. p의 길이를 구함
let leg = p.count
// 2. 정답 카운트를 위한 변수 초기화
var count = 0
// 3. t와 p를 Int로 비교하기 위해 p를 미리 Int로 변환
let target = Int(p)!
// 4. t에서 p의 길이만큼 슬라이딩 윈도우 방식으로 부분 문자열을 순회
for i in 0...(t.count - leg) {
// 5. 시작 인덱스와 끝 인덱스를 계산하여 부분 문자열 생성
let start = t.index(t.startIndex, offsetBy: i)
let end = t.index(start, offsetBy: leg)
let substring = t[start..<end]
// 6. 부분 문자열을 Int로 변환 후 p의 값과 비교
if let num = Int(substring), num <= target {
count += 1 // 7. 조건을 만족하면 카운트 증가
}
}
return count // 8. 최종 결과 반환
}
cs 공부
질문 : 2. 캐시 메모리의 개념과 역할에 대해 설명해주세요
답변 :
더보기
CPU 아키텍처를 쉽게 말하면 컴퓨터의 뇌가 명령을 처리하는 방식임. ARM과 x86이 가장 많이 쓰이는 두 종류임.
1. ARM 아키텍처
- 설명: ARM은 간단한 명령어로 빠르게 일하는 구조임. 덜 복잡한 일을 자주 반복하는 방식이어서 힘을 적게 쓰고 오래 일할 수 있음.
- RISC(Reduced Instruction Set Computer) 아키텍처를 따름
- 장점: 배터리를 적게 쓰기 때문에 스마트폰 같은 모바일 기기에 아주 잘 맞음. 또한, 발열이 적어서 열이 많이 나지 않아 기기가 더 시원하게 유지됨.
- 어디에 많이 쓰임? 주로 스마트폰, 태블릿, 스마트워치 같은 배터리를 사용하는 기기들에 많이 사용됨. 요즘은 전기를 아끼는 데이터 센터나 가벼운 노트북에서도 사용되고 있음.
2. x86 아키텍처
- 설명: x86은 명령어가 많고 복잡한 일을 한 번에 처리하는 방식임. 복잡한 연산이나 많은 계산이 필요할 때 고성능을 낼 수 있음.
- CISC(Complex Instruction Set Computer) 아키텍처를 따름
- 장점: 더 많은 명령어를 지원해 컴퓨터가 복잡한 작업을 빠르게 처리할 수 있음. 그래서 복잡한 작업이나 고성능이 필요한 곳에서 많이 사용됨.
- 어디에 많이 쓰임? 주로 데스크탑 PC나 서버, 고성능을 요구하는 컴퓨터에서 많이 사용됨.
요약하자면
- ARM: 힘을 덜 쓰고 오래가는 기기에 잘 맞음. 스마트폰, 태블릿 같은 기기.
- x86: 힘을 더 많이 쓰지만 복잡한 작업을 잘 처리함. 데스크탑, 서버 같은 고성능 기기.
쉽게 말해, ARM은 전기 덜 먹고 오래가는 스타일, x86은 복잡한 일을 빠르게 해내는 스타일임.
💬
아이고 힘들다
그래도 요즘 공부가 잼따 앙뇽
'TIL' 카테고리의 다른 글
241125 TIL | 코드로 UI 짜기, 네트워크 프로토콜 스택 (0) | 2024.11.25 |
---|---|
241115 TIL | 최소직사각형 swift, ARC | 알고리즘 공부 효율 찾기 (4) | 2024.11.15 |
241106 텍스트 필드, Git, 운영체제, 별 찍기 (8) | 2024.11.06 |
241102 TIL | 오랜만에! / iOS 타이머 앱 만들기, Swift Timer (4) | 2024.11.02 |
241007 TIL | 데이터베이스 종류, 직렬 큐, 동시 큐, GCD (0) | 2024.10.07 |