본문 바로가기

분류 전체보기16

F-Lab iOS 1개월 후기 지원동기많은 개발자 특히 주니어 들은 모두 한 번 쯤은 고민해봤을 것 같은 문제였다."내가 잘 하고 있는건가?", "더 좋은 방법은 뭘까?"나 역시 그런 주니어들 중 한명이었다.현재 다니는 회사에서 사수 없이 혼자 개발을 해야했기 때문에 알 방법이 없었고, 입사한 지 1년 만에 스스로 성장이 멈췄다고느꼈다. 처음엔 어떻게든 좋은 코드를 작성하도록 노력해보고 고민도 해봤지만, 숨막히듯 밀려와서 쌓이는 일에는 장사가 없었다.나역시 결국엔 빠르게 피쳐를 개발할 수 있는 관성적인 개발을 하고 있었다고 한다...이런 와중 문득 내가 개발자라는 직업을 왜 선택했을까? 에 대해 다시 생각해보게 됐다.현실에 안주하지 않고, 끊임없이 발전하는 나를 원해서 선택한게 아니었던가??그래서 조금 더 좋은 환경과 내가 원하는 동.. 2025. 7. 5.
GCD vs Swift Concurrency 동작 원리 비교 (Swift Concurrency를 들어가면서...) GCD vs Swift Concurrency1. 쓰레드 관리 방식GCD선점형 쓰레드 스케줄링(Preemptive Threading): 운영체제가 강제로 쓰레드를 전환함.Context Switching 비용: 쓰레드 간 전환 시 레지스터 상태 저장/복원 등의 오버헤드가 발생함.쓰레드 폭발(Thread Explosion): 많은 작업이 동시에 실행되면 쓰레드가 과도하게 생성되어 시스템 성능이 저하됨.Swift Concurrency협력적 쓰레드 풀(Cooperative Thread Pool): 작업들이 자발적으로 양보하며 실행됨.비선점형(Non-Blocking): await 키워드에서 의해 작업이 중단되고, 해당 쓰레드는 다른 작업을 처리할 수 있음.적은 쓰레드로 많은 작업: CPU 코어 수에 맞춰 최적화된 .. 2025. 7. 5.
버블 정렬(Bubble Sort) 1. 버블 정렬이란? 버블 정렬은 인접한 두 데이터를 비교해서앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 두 데이터의 자리를 바꿔서 정렬하는 방식! [5, 6, 3, 10, 7] 이라는 배열이 있을 때를 가정. 1. 5와 6 비교 (뒤에 있는 데이터가 크니까 자리 변경 없음)2. 6과 3 비교 (두 데이터 자리 교환) 이렇게 스캔을 하다보면 끝까지 정렬을 했을 때[5, 3, 6, 7, 10]이 1차적으로 나오게 됨. ???정렬이 안됐는데? 맞음. 모두 정렬이 될 때 까지 똑같은 행위를 반복함 ㅎㅎ여기서 2차 시작을 하게되면 처음 5와 3만 바꾸면 정렬이 완료![3, 5, 6, 7, 10] 이렇게 반복을 했을 때 정렬이 완료되면 끝! 2. 코드로 구현1. 배열 요소의 갯수 - 1 만큼 반복하면 스캔 작.. 2025. 6. 28.
이진 탐색(Binary Search) 1. 이진 탐색이란? 탐색할 자료를 둘로 나누고, 원하는 데이터를 탐색하는 알고리즘으로탐색할 자료가 정렬이 되어 있을 때 사용이 가능함! [2, 5, 9, 10, 11, 15, 20, 21]의 정렬된 배열이 있을때,가운데를 기준으로 반으로 나눔! [2, 5, 9, 10] [11, 15, 20, 21]여기서 가운데는 배열의 갯수를 2로 나누었을 때의 index8 / 2 = 4 index 4 = 11 이므로여기서 타겟이 21이라고 하면, 11보다 크기 때문에다시 위와 같은 작업을 반복! [11, 15] [20, 21]index = 2가운데 값은 20이 나오고 타겟(21)이 더 크니까 또 반복하면 되는데,남은 데이터가 1개밖에 없으니 남은 데이터와 타겟값을 비교해서 return 하면 된다.! 2. 코드로 구.. 2025. 6. 23.