본문 바로가기

분류 전체보기342

LinkedList (Swift) 연결 리스트 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. ko.wikipedia.org 링크드 리스트 구조 연결 리스트 배열은 순차적으로 연결된 공간에 데이터를 나열하는 데이터 구조 링크드 리스트는 떨어진 곳에 존재하는 데이터를 포인터를 이용해 연결해서 관리하는 데이터 구조 미리 데이터 공간을 할당할 필요가 없음 배열에 비해 다음 노드 위치를 저장할 공간 필요 배열에 있는 index가 없어서 direct access가 안됨 (접근 속도 느림) Doubly Linked List (양방향) 노드 class Node : Equatable { var prev : Node? var next : Node? var value : T init(value : T) { self.value = va.. 2021. 1. 28.
무료 네트워크 & 운영체제 강의 추천 이번에 면접을 준비하면서 CS 기초를 복습할 기회가 생겼다. 책을 참고하면서 쭉 내용을 처음부터 끝까지 보고 싶었는데 좋은 강의가 있어서 추천한다. 네트워크 www.youtube.com/playlist?list=PL0d8NnikouEWcF1jJueLdjRIC4HsUlULi 네트워크 기초(개정판) OSI 7계층에서 각 계층의 다양한 프로토콜들을 통해서 배우는 네트워크 기초에 대한 강의입니다. www.youtube.com 운영체제 www.youtube.com/playlist?list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN [Course] Operating System (CPA310) - 운영체제 강의 o Operating System (운영체제), CPA310, KOREATECH o .. 2021. 1. 27.
2021 Todo List 공부 TDD 예제 프로젝트 시도 MVVM 이외의 아키텍쳐 예제 앱 개발 (VIPER, RIBS, ReactorKit 사용) RxSwift 익숙해지기 디자인 패턴 스터디 LeetCode 300 문제 CS 과목 점검 자료구조 알고리즘 네트워크 운영체제 개발 관련 서적 읽기 클린 아키텍쳐 클린코드 등등 사이드 프로젝트 PowerApps Solution MVP 마들렌 버전 2.0 개발 및 출시 와하앱 프로젝트 구조 개선 및 버그 수정 후 업데이트 리플렉스 iOS 앱 개발 (미정) 오픈소스 라이브러리 만들어 보기 (SwiftUI UIKit easy integration) 아이디어 만드는 앱? 딴짓 Car Play 앱 만들어 보기 SwiftUI 로 Universal App 만들어 보기 AWS 람다 Swift로 서버.. 2021. 1. 25.
네트웤정리 보호되어 있는 글 입니다. 2021. 1. 25.
네트워크 기초 정리 노트 네트워크: 노드들이 연결된 통신망 *노드: 네트워크에 속한 장비 인터넷: 세상에서 가장 큰 네트워크 (이 통신망을 통해서 웹서비스가 되는데 world wide web) 인터넷 != www 크기에 따른 분류 LAN (Local Area Network) : 지역끼리 묶은 통신망 WAN (Wide Area Network) : 멀리있는 지역, 여러개의 LAN을 연결시킨것 MAN (Metropolitan Area Network) 형태에 따른 분류 Star: 중앙에 모든 장비가 연결됨 (가운데 장비 고장나면 통신 안됨, 집 공유기, LAN 대역 구성할때 자주 사용 Mesh: 그물 형태 Ring Bus 혼합: 실제 인터넷 형태 통신 연결에 따른 분류 유니캐스트 : 1:1 통신 멀티캐스트: 1:N 통신 브로드캐스트: .. 2021. 1. 24.
다익스트라 알고리즘 최단경로 찾기 문제 우선순위 큐를 이용한다. Swift에서 우선순위큐는 직접 만들어야 한다. min Heap 으로 만들면 최적이지만 구현의 편리함을 위해 이번 코드에서는 배열로 sort 해서 removeLast로 min값을 찾아 처리한다. //dijkstra var graph : [String: [(String,Int)]] = [:] graph.updateValue([("B",8),("C",1),("D",2)], forKey: "A") graph.updateValue([], forKey: "B") graph.updateValue([("B",5),("D",2)], forKey: "C") graph.updateValue([("E",3),("F",5)], forKey: "D") graph.updateValue.. 2021. 1. 21.
탐욕 알고리즘과 예제문제 (Swift) Greedy algorithm 최적의 해에 가까운 값을 구하기 위해 사용 여러 경우 중 하나를 결정해야 할 때 마다, 매 순간 최적이라고 생각되는 경우를 선택하는 방식으로 진행해서 최종적인 값을 구하는 방식 동적 계획법(DP)과 비교 길을 찾을때 동적계획법: 모든 경우의 길을 전부 확인하고 최단 경로를 찾아서 출발 탐욕법: 일단 출발하고 갈림길에 따라 최적의 경로로 생각되는 길을 선택 [출처 및 자세한 내용] 동적 계획법(Dynamic Programming)과 탐욕법(Greedy Algorithm) 0x1X28uI-8A6oGM7.jpeg가장 빨리 가는 길을 찾고 싶다. 한 가지 방법은 출발하기 전, 가는 거리와 신호등, 교통 상황 등을 전부 계산해서 최적의 길을 찾는 것이다. 머리가 깨질 듯이 전부 확인.. 2021. 1. 20.
Graph Swift (BFS, DFS) Graph 표현 Dictionary + Array var graph : [String: [String]] = [:] graph.updateValue(["B","C"], forKey: "A") graph.updateValue(["A","D"], forKey: "B") graph.updateValue(["A","G","H","I"], forKey: "C") graph.updateValue(["D","B","E","F"], forKey: "D") graph.updateValue(["E","D"], forKey: "E") graph.updateValue(["F","D"], forKey: "F") graph.updateValue(["G","C"], forKey: "G") graph.updateValue(["H",.. 2021. 1. 20.
이진탐색 Binary Search - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 탐색 알고리즘 순차탐색 해시구조 BST 이진탐색 class Solution { func search(_ nums: [Int], _ target: Int) -> Int { var head = 0 var tail = nums.count-1 while head 2021. 1. 19.
Traversing Tree (recursive, iterative) Tree traverse 할때 iterative 하게 하려면 Stack 사용 level traverse 의 경우 Queue 사용 Binary Tree 일 경우 node nil 로 loop 가능 N-ary Tree Preorder Traversal - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com /** * Definition for a Node. * public class Node { * public var val: Int * public var children.. 2021. 1. 18.
Swift Heap Heap 여러개의 값들 중에서 가장 큰 값이나 가장 작은 값을 빠르게 찾아내도록 만들어진 자료구조 완전 이진 트리 (이진 탐색 트리와 다름) 중복허용 트리 좌측부터 node 추가됨 삽입 완전 이진트리 만족하게 배열의 맨 마지막에 삽입 부모노드와 비교하며 한칸씩 올림 삭제 heap 에서는 root를 삭제함 (우선순위큐) root 삭제 제일 작은 값 (배열끝값) 을 root로 옮김 child node 와 비교 (둘다 클 경우 둘 중 큰값과 swap) code import Foundation var heap : [Int] = [] //본인 index i 일때 //parent index: i/2 //left child index: 2*i //right child index: 2*i+1 heap.append(-1.. 2021. 1. 18.
이진트리 연산 Maximum Depth of Binary Tree - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com node count leaf node node height /** * Definition for a binary tree node. * public class TreeNode { * public var val: Int * public var left: TreeNode? * public var right: TreeNode? * public init() { self.. 2021. 1. 16.
이진트리 순회 Range Sum of BST - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 전위 순회 부모노드를 먼저 처리한 후에 자식노드를 처리해야 할때 후위 순회 자식노드를 먼저 처리한 후에 부모노드를 처리해야 할때 (ex, 디렉토리 용량 계산) /** * Definition for a binary tree node. * public class TreeNode { * public var val: Int * public var left: TreeNode? * public.. 2021. 1. 16.
Swift Sorting Algorithm Note 1. 선택 정렬 정렬되지 않은 맨 앞에서 부터 이를 포함한 그 이후의 배열값 중 가장 작은 값을 찾는다. 가장 작은 값을 찾으면 그 값을 현재 인덱스와 바꿔준다. 다음 인덱스에서 위 과정을 반복한다. 시간 복잡도: O(n^2) 공간 복잡도: O(n) 5 2 3 1 1 5 2 3 1 2 5 3 1 2 3 5 class Solution { func sortArray(_ nums: [Int]) -> [Int] { var nums = nums for i in 0.. [Int] { var nums = nums var tmp = 0 for i in 0.. swap // let tmp = nums[i] // nums[i] = nums[j] // nums[j] = tmp // } } tmp = nums[minIndex.. 2021. 1. 13.
2020 회고 2020년은 네이버 인턴기간 뿐만 아니라 업무 외적으로도 많이 성장할 수 있는 한 해였다. 올 한해 굵직한 일들을 시간 순으로 정리해보았다. 스타트업에서 작업한 플리포스 앱 출시 네이버 AI 버닝데이 해커톤 2등 쿠알라룸푸르 여행 부산대 DSC 코어멤버 활동 (iOS 세션 진행) 수료링크 개발 블로그 시작 (300여개 글 작성) (블로그링크)[https://haningya.tistory.com/] 외식예약 외주앱 출시 4학년 1학기 23학점 수강 (평점 3.9) 구글 클라우드 플랫폼 Core Infrastructure 강의 수료 한화 드림인 아카데미 선발 및 우수팀 수료 (100:1 경쟁률) 후기 학부 졸업과제 완료 드림인 팀프로젝트 아이패드 로토스코핑 앱 출시 소개페이지 사이드 프로젝트 교내 해커톤 우.. 2021. 1. 1.
토익후기 중학교 3학년때 쳤던 토익인데 유효기간이 다되어 졸업기준 때문에 다시 치게 되었다. 여전히 나에게 뭘 잘해요? 물어보면 개발 보단 영어를 잘한다고 말하는 것 같다.. 영어말고 컴퓨팅 사고 조기교육을 받았어야 했다. 2020. 12. 28.
👨‍🎓 드림인 프로젝트 수료 및 앱 출시! 오늘은 드림인 아카데미 교육과정 수료식이 열리는 날이다. 처음 드림인을 지원해 합격한 뒤 짧지 않은 시간동안 매주 평일에는 온라인 강의를 듣고 과제를 하고, 토. 일요일에는 2시간씩 실시간 강의를 들어야 했다. 한화 Dreamin iOS Academy 최종합격 후기 Connect your Dream > dreamin | 드림인" data-og-description="dreamin iOS Academy" data-og-host="dreamin.career" data-og-source-url="https://dreamin.career/academy/ios" data-og-url="https://dreamin.c.. haningya.tistory.com iOS 개발 경험이 있었기에 어려운 일정은 아니였지만 처.. 2020. 11. 28.
MS-Power Apps 예시앱 (excel 을 DB로 쓴다고?) 간단한 파워앱스 샘플앱을 만들어 본다. Exercise - Create your first app in Power Apps - Learn Learn how to build your first app in Power Apps. docs.microsoft.com 특징은 excel에 저장된 데이터를 사용한다. 파워앱스 플랫폼을 배우기에 좋은 data source 이지만 한번에 한명만 excel파일에 접근가능한 단점이 있어서 SharePoint나 common datasource와 같은 서비스를 production 단계에서는 사용해야 한다. 또한 excel에서 데이터는 계산식이 있어서는 안된다. 해당 파일을 내 oneDrive 저장소에 추가한다. 좌측 앱 탭에서 새앱 -> 캔버스 로 새로운 프로젝트를 만든다. 시.. 2020. 11. 15.
#18 Custom Publishers & Handling Backpressure 보호되어 있는 글 입니다. 2020. 11. 3.
#17 Schedulers 책을 읽어오면서 scheduler 를 파라미터로 사용하는 operator 들을 많이 보았다. 대부분의 경우 간편하게 DispatchQueue.main을 사용했었다. 개발자로써 DispatchQueue뿐만 아니라 global, concurrent queue 나 serial dispatch queue도 사용해 봤을 것 이다. 이번 장에는 이러한 dispatch queue 에 대해 전반적으로 알아본다. 그런데 왜 Combine 비슷한 새로운 컨셉이 필요할까? 실제 세상으로 나가서 combine schedulers가 어디에 쓰이는지 알아보자 이번 챕터에서는 왜 schedulers 컨셉이 등장했는지 알아본다. 어떻게 Combine 이 asynchronous event 와 action을 쉽게 다룰수 있는지 알아본다.. 2020. 11. 3.
GraphQL? better than REST? GraphQL 강좌 1편: GraphQL이 무엇인가? | VELOPERT.LOG 최근 페이스북에서 만든 어플리케이션 레이어 쿼리 언어인 GraphQL 이 공식릴리즈되어 여기저기서 적용한 사례가 생기고있죠 (페이스북은 원래부터 사용하고있었고, 대표적으로 갓 GitHub..) 이 Gra velopert.com GraphQL 이란 ( + 장점) 페이스북에서 만든 application layer 쿼리 언어이다. 기존에 RESTAPI 는 서버가 특정 데이터를 쿼리해서 얻은 결과를 반환하는 각각의 엔드포인트에 (예를들어 baseURL/user/get/ - 특정 유저 정보 쿼리) 요청을 던져 해당 데이터를 불러오는거라면 GraphQL은 필요한 정보를 쿼리문으로 만들어 하나의 엔드포인트에 던지면 해당 쿼리에 맞는 결과.. 2020. 11. 2.