0. TIL
잘한 점: 알고리즘 문제를 평소보다 깊이 있게 공부했다! | 불금에 1시까지 카페에서 공부하는 직장인이 있다....???
개선점 : 공부 편식하지 않기.. | 그런데 그 카페를 10시에 온 사람이 있다...???
배운 점: 문자열을 배열로 쪼겠다 합쳤다 할 필요가 없다 | 퇴근하고 바로 카페 가기 ^_ㅠ
알고리즘 기초 문제를 풀면서
계속 아직 안배운 문법 + 방식을 사용해야하다 보니 10분이면 풀 문제를
맨땅헤로 1시간씩 풀고 있는 대참사 발생
개념 공부를 언넝하고 문제를 풀어야하는데 왜 반대로 하고 이쓸까 ^_^...
이 부분 인지하고 효율적인 공부를 하즈ㅏㅏ
1. 데일리 루틴
cs 공부
질문 : 페이징(Paging) 기법의 개념과 동작 원리, 페이지 테이블의 역할에 대해 설명해주세요.
개념: 가상 메모리와 물리 메모리를 동일한 크기의 페이지와 프레임으로 나누어 매핑하는 메모리 관리 기법
동작 원리: 가상 주소를 페이지 테이블을 통해 물리 주소로 변환, 필요한 페이지만 메모리에 적재하고 나머지는 디스크로 스왑함
페이지 테이블 역할:
가상 주소와 물리 주소 매핑
페이지 유효성 및 보호 정보 관리
페이지 교체 시 정보를 제공
장점: 외부 단편화 방지, 효율적 메모리 관리, 멀티태스킹 지원
단점: 페이지 폴트 발생 시 성능 저하, 페이지 테이블 관리로 인한 메모리 오버헤드
1일 1커밋
📜 문제 설명
문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다.
각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.
제한 사항
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.
⌨️ 입출력 예
s | return |
"try hello world" | "TrY HeLlO WoRlD" |
✏️ 나의 코드
// ❌ 정답률 약 50%의 틀린 코드임
// 주석은 오답 노트
func solution(_ s:String) -> String {
var sepArr = s.split(separator: " ") //굳이,,쪼겠다 붙였다 할 필요 없이 s 쓰면 됨
var wordArr: [String.Element] = [] // 위와 동일
var Str = ""
//새로운 단어가 될 때마다 짝/홀 판별하는 기능 없음
for i in sepArr{ //s 쓰기
wordArr = Array(i) //22...
for (index, item) in wordArr.enumerated(){
if index % 2 == 0{
wordArr[index] = String.Element(item.uppercased())
}
// 짝수면 소문자로 뱐환하는 것도 추가해야함
Str += String(wordArr[index])
}
print(wordArr)
Str += " "
}
Str.removeLast()
return Str
}
쩝 어떻게든 풀어보고 싶어서 발버둥 친 흔적 ㅎ
심지어 소문자로 변환하는거도 놓쳤네..!!!
📚 개선 코드
func solution(_ s: String) -> String {
var result = "" //새로운 문자열을 담아야 함
var isEven = true // 홀짝 판별을 위한 변수 생성
for char in s { // 문자열을 한 글자씩 처리할 땐 String.Element로 나눈 배열 생성할 필요 없이 바로 s 사용
if char == " " {
result.append(char) //문자열에 바로 append (배열에만 사용 가능한거 아님)
isEven = true // 공백을 만났기 때문에 다음 단어의 첫 시작을 짝수로 만들기 위해
} else {
result.append(isEven ? char.uppercased() : char.lowercased())
//홀수면 대문자로 짝수면 소문자로 append
isEven.toggle()
//홀 <-> 짝 변경
}
}
return result
}
물론 내가 구현한 코드가 틀린 코드이긴 하지만
내 코드보다 개선 코드가 훨씬 이해 잘됨..
스스로도 이해 안되는 스파겥히 그 잡채
이렇게 주석으로 오답 노트하는 방식은 처음 해봤는데 복습이랑 이해가 잘돼서 좋은 것 같다!
swift 강의
강의명 : iOS에서의 네트워킹
런데이 하고 싶은데 비가 와서 슬픈 불금~~~ 🫠
카페 마감이라 쫓겨나 볼게요
집에 어케 가징
'TIL' 카테고리의 다른 글
241007 TIL | 데이터베이스 종류, 직렬 큐, 동시 큐, GCD (0) | 2024.10.07 |
---|---|
240924 TIL | 메모리 사용량 최적화, 삼총사 swift (3) | 2024.09.24 |
240918 TIL | 가상 메모리, 네트워크 (5) | 2024.09.19 |
240916 TIL | 해시 함수, 세균 증식 (0) | 2024.09.16 |
240911 TIL | 암호화, 보안, 타입캐스팅, 좌표 (0) | 2024.09.11 |