본문 바로가기

분류 전체보기34

[Swift] 이진 탐색 구현 [Swift] 이진 탐색 구현 조건 1. 배열 내부의 데이터가 정렬되어 있어야 함 2. 탐색 범위를 절반씩 좁혀가며 데이터를 탐색 3. 이진 탐색은 위치를 나타내는 변수를 세 개 사용 -> 시작점, 끝점, 중간점 -> 중간점으로 찾으려난 데이터와 비교하여 다시 시작점 / 중간점 / 끝점 설정 언제 쓰면 좋을까? - 처리해야 할 데이터의 개수나 값이 1000만 단위 이상으로 넘어갈 때 사용 구현 - 재귀 혹은 단순 반복문으로 구현이 가함 - 시간 복잡도: O(logN) - 아래는 재귀 함수를 호출하는 방식으로 구현 func binarySearch(_ array: [Int], _ target: Int, _ count: Int) -> Int { if array.count == 1 && array[0] == .. 2023. 4. 11.
[Swift] 다양한 문자열 처리 방법 [Swift] 다양한 문자열 처리 방법 계속 추가 예정🤔 주어진 문자열을 특정 문자열로 변환할 때 String.replacingOccurrences(of: "I", with: "O") ["I -45", "I 653"] ----> ["O -45", "O 653"] 특정 문자열로 쪼갤 때 단, components(separatedBy: "")는 특정 문자열로 쪼갤 수 있음 ex: separatedBy: "underbarA" String.components(separatedBy: " ") return [String] or String.split(separator: " ") return [String.Subsequence] ["I -45", "I 653"] ---> [["I", "-45"], ["I", "653.. 2023. 4. 5.
Makefile 생성하기 Makefile 생성하기 배경 글로벌 앱 작업 중 PM분께서 번역파일을 구글 드라이버에 올려주셨다. 실시간으로 수정되거나 추가되는 key/value 값이 있기에 매번 파일을 다운받아서 변환하는 작업은 매우 번거롭다. 귀찮다! 그래서 python으로 스크립트를 작성한 뒤 터미널로 자동으로 실행되게끔 만들었다. 오늘은 Makefile을 만들어서 미리 지정한 명령어로 스크립트가 실행되게끔 만들어보자. 설정 방법 프로젝트 메인 폴더에서 터미널을 열고 Makefile 파일을 생성해주자. # touch 명령어로 Makefile 생성 touch Makefile 맥인 경우 기본으로 파일을 열면 텍스트 편집기로 열린다. (vim이든 상관없음) 번역파일을 생성하는 python 파일은 localize 폴더 내부에 local.. 2023. 3. 28.
Protocol을 사용하여 Social Auth Service 구현하기 배경 글로벌 앱이 도입됨에 따라 소셜 로그인이 추가되었다. 앱스토어 심사 지침에 따라 소셜 로그인을 추가 할 경우 애플 로그인은 필수로 적용해야 한다. 구글 SDK도 적용 해 놨지만, 지원 종료된다는 얘기가 있어서 웹뷰로도 대응해놨다. 그래서 최근에 읽은 '객체지향의 사실과 오해'를 보며 이해한 수준에서 설계해봤다..! 고려사항 두 로그인 방식에 있어서 결과적으로 필요한 데이터는 무엇일까? 클라이언트에서는 로그인 후 돌아오는 token을 디바이스에 저장하지 않고 서버측에 바로 넘기기만 하면 된다. 여기서 변하는 것과 변하지 않는 것을 생각해봤다. 우선 변하지 않는 부분은 각각의 로그인 방식 모두 베이스가 될 ViewController를 갖고 있어야 한다. 또한 로그인을 수행 할 authenticate().. 2023. 3. 23.
네트워크 쉽게 설명해보기 -2- 네트워크 Application Layer 앞서 네트워크 입문 1에서 실제로 패킷이 다음 라우터에 도달할 때의 속도는 빛의속도라고 했다. 또한 패킷의 비트들이 다음 라우터에 도달한다고 해서 물 흐르듯이 다음 라우터로 가는 게 아니라 패킷이 모두 도달한 뒤, 다음 라우터로 간다고 했다. 패킷이 한 묶음으로 가는 것이 패킷 교환 방식이고, 4가지 문제점(딜레이)과 해결 방법에 대해 얘기했다. 이번 시간에는 TCP/IP 4계층의 전체적인 클라이언트-서버 아키텍처와 전송계층의 특징 일부분을 알아보자. Client - Server Architecture 서버의 특징부터 살펴보자. 서버는 우리가 흔히 아는 웹서버를 기준으로 풀어보자. 서버의 특징은 뭘까? 우리가 어디에 있던 스마트폰으로 사파리를 켜서 네이버에 들어갈.. 2022. 12. 16.
네트워크 쉽게 설명해보기 -1- TCP/IP 4계층을 공부하며 정리하는 공간입니다. 잘못된 정보나 예시가 있다면 언제든지 말씀해주세요. 프로토콜이란? 다들 들어봤을 법한 TCP와 UDP가 있다. 여기서 P에 주목해보자. P는 Protocol(규약, 방식)이다. 규약과 방식이 뭘 의미하는 걸까? 예를 들어 한 커플 A, B가 통화로 대화를 한다고 생각해보자. A, B의 통화 내용을 저녁 약속을 잡는 상황이라 생각해보자. 대화 내용은 어떨까? 전화 걸자마자 "저녁에 밥 같이 먹을래?"라고 말할까? 일상생활에서 통화로 중요한 내용을 전달할 때는 앞의 부가적인 요소가 붙는다. A: 어 자기야 뭐해? 일 언제끝나? B: 어 자기야 나 오늘 칼퇴 각~~ A: 오 그래? 일이 빨리 끝나서 다행이네~ B: 응 근데 왜 전화 했어? A: 어 오늘 "저.. 2022. 12. 16.