일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- process
- 청년취업사관학교후기
- 백준
- collectionView
- Masil
- 프로젝트회고
- xml
- 조건문
- 새싹후기
- GIT
- UIKit
- 스위프트
- CS193p
- ImageSlider
- 알고리즘
- IOS
- MVVM
- UserDefault
- colorofdays
- 코딩테스트
- xcode
- 스터디
- Swift
- SwiftUI
- 프로그래머스
- 오늘의 색상
- WidgetTree
- stanford
- flutter #state # stateful #stateless
- flutter
- Today
- Total
목록분류 전체보기 (105)
개발을 시작하는 이야기
어버이날 연휴겸, SeSAC 과정을 마치고 재충전을 겸해서 가족여행을 다녀왔다. 그 핑계로 잠시 공부도 쉬었다. 가족여행은 오키나와에 갔던게 5년전이니 그쯤 되었나 싶은데 그때 아무도 여행계획을 세우지도 도와주지도 않아서 다음엔 정말 안가야지 싶었는데 어쩌다보니 이렇게 또 가게 되었다. 역시 처음이 힘들지 두번은 도움을 기대를 아예안하니 정신적으로 좀 더 수월했달까.... 이제 다음주부터는 출근을 해야 하니 늦춰진 낮밤도 돌려야 하고, 이번주 까지는 남은 면접들을 마무리 하고, 출근을 준비 하며 완전하게 충전을 하고서 다음주 부터는 다시 힘내볼 예정 남들보다 늦게 시작해서 열심히 달려야 하는데 자꾸만 뒤로 쳐지는 느낌이 들게 된다. 그럴때마다 조급해지긴 하는데 조급함에 쌓여 오히려 속도가 안나는것만 같다..
강의 보기 : YouTube :: Stanford URL과 Image를 Drag & Drop 이모지 외에도 배경을 Drag & Drop 할 수 있기 때문에 URL이나 Image가 드롭되었을 때 이를 받을 수 있어야 한다. private func drop(providers: [NSItemProvider], at location: CGPoint, in geometry: GeometryProxy) -> Bool { var found = providers.loadObjects(ofType: URL.self) { url in document.setBackground(EmojiArtModel.Background.url(url)) } if !found { found = providers.loadObjects(ofTy..
문제 설명 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 조건 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. 작업 진도는 100 미만의 자연수입니다. 작업 속도는 100 이하의 자..
오늘은 지난번에 이야기한 대로 Process의 구조에 대해서 좀 더 알아보려고 한다. Code 프로그래머가 작성한 소스 코드가 기계어 형태로 저장된다. 기계어라 함은 컴퓨터가 읽을 수 있는 가장 밑단의 언어로 0과 1로 이루어진 언어이다. 컴파일 타임에 결정되고, 중간에 코드가 변경되지 않도록 Read-Only 형태로 저장된다. Data 전역변수와 static 변수가 저장되는 공간이다. 프로그램 시작과 동시에 할당되고, 프로그램이 종료되어야 메모리가 해제된다. 실행 도중 변수 값이 변경될 수 있기 때문에 Read-Write로 저장된다. struct Profile { static let country = "Korea" } var name: String? var age: Int? func fetchData(..
문제 설명 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 따라 1cm × 1cm의 정사각형으로 잘라 사용할 예정이었는데, 누군가가 이 종이를 대각선 꼭지점 2개를 잇는 방향으로 잘라 놓았습니다. 그러므로 현재 직사각형 종이는 크기가 같은 직각삼각형 2개로 나누어진 상태입니다. 새로운 종이를 구할 수 없는 상태이기 때문에, 이 종이에서 원래 종이의 가로, 세로 방향과 평행하게 1cm × 1cm로 잘라 사용할 수 있는 만큼만 사용하기로 하였습니다. 가로의 길이 W와 세로의 길이 H가 주어질 때, 사용할 수 있는 정사각형의 개수를 구하는 solutio..
이전에 그럼 우린 스레드와 프로세스에 대해서 알아봤다. 프로세스는 실행될때 운영체제로 부터 각각 독립된 메모리 영역을 할당받지만 스레드는 프로세스 내에서 스텍 영역만 별도로 할당받고 부모 프로세스의 Code, Data, Stack, Heap 영역은 공유하게 된다. 따라서 프로새스 내에서 자식 스레드들은 서로 주소 공간이나 자원을 공유하면서 실행될 수 있다. (스텍은 서로간의 데이터 공유가 수월하지만 프로세스간의 데이터 공유는 그렇지 않다고 한다. 하지만 불가능 한것은 아니라고 함) 그럼 이젠 멀티 스레드에 대해 알아보자 멀티스레드는 하나의 어플리케이션을 여러개의 스레드로 구성하여 하나의 스레드가 하나의 작업을 처리하도록 하는 것이다. 만일 단일 스레드로 네트워크나 데이터베이스 통신과 같은 긴 작업을 수행..
문제 설명 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. "[닉네임]님이 들어왔습니다." 채팅방에서 누군가 나가면 다음 메시지가 출력된다. "[닉네임]님이 나갔습니다." 채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다. 채팅방을 나간 후, 새로운 닉네임으로 다시 들어간다. 채팅방에서 닉네임을 변경한다. 닉네임을 변경할 때는 기존에 채팅방에 출력되어 있던 메시지의 닉네임도 전부 변경된다. 예를 들어, 채팅방..
지금의 내 앱은 싱글스레드만 사용하고 있다. 하나의 스레드만 사용해서 덜 복잡하고, 단순하게 작성할 수 있었지만 앱의 사용자 경험은 더 낮아졌다. 앱의 최초 실행 시 데이터를 저장하는데 소요되는 시간은 1분 정도 걸리는 것이 무척 불편한 편이고, 포트폴리오로 제출할 때 심각한 마이너스 요소라고 생각해서 이를 멀티스레드로 변경하려고 한다. 그럼 일단 싱글 스레드, 멀티 스레드 라고 하는데 스레드가 뭘까? 일단 모르는 건 공식문서부터 보라고 배웠으니 공식문서를 살펴보자. [공식문서 : Thread] A thread of execution. 스레드는 긴 작업을 수행해야 하지만 애플리케이션의 나머지 실행을 차단하고 싶지 않을 때 특히 유용하다. 특히 스레드를 사용하여 사용자 인터페이스 및 이벤트 관련 작업을 처..
문제 설명 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자열에서 같은 값이 연속해서 나타나는 것을 그 문자의 개수와 반복되는 값으로 표현하여 더 짧은 문자열로 줄여서 표현하는 알고리즘을 공부하고 있습니다. 간단한 예로 "aabbaccc"의 경우 "2a2ba3c"(문자가 반복되지 않아 한번만 나타난 경우 1은 생략함)와 같이 표현할 수 있는데, 이러한 방식은 반복되는 문자가 적은 경우 압축률이 낮다는 단점이 있습니다. 예를 들면, "abcabcdede"와 같은 문자열은 전혀 압축되지 않습니다. "어피치"는 이러한 단점을 해결하기 위해 문자열을 1개 이상의 단위로 잘..
문제 설명 두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다. 제한 조건 두 수는 1이상 1000000이하의 자연수입니다. 예시 n m return 3 12 [3, 12] 2 5 [1, 10] 입출력 예 설명 입출력 예 #1 위의 설명과 같습니다. 입출력 예 #2 자연수 2와 5의 최대공약수는 1, 최소공배수는 10이므로 [1, 10]을 리턴해야 합니다. Solution.Swift func solution(_ n:Int, _ m:Int) -> [Int..