본문 바로가기

전체 글

(87)
[Algorithm/Swift] 프로그래머스(Lv.3) - 파괴되지 않은 건물 안녕하세요 제인입니다 :) 알고리즘 문제를 풀다가 누적합을 이용해 구간의 변화를 효율적으로 계산하는 방법에 대해 새로 알게 되어 문제 풀이와 함께 정리해보려고 합니다. 문제 풀이를 통해 누적합에 대해 정리해보겠습니다. 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 처음 접근 해당 문제는 적군이 특정 건물들을 공격하고 아군이 회복하는 과정을 거쳐 최종적으로 파괴되지 않은 건물의 개수를 구하는 문제입니다. 그렇기 때문에 2차원 배열 요소의 값의 변화를 효율적으로 처리하는 것이 관건입니다! (효율성 테스트 존재) 저는 효율적인 처리 방법에..
[iOS] 키체인(Keychain)을 이용한 데이터 저장 및 관리 안녕하세요 제인입니다 :) 최근에 프로젝트 개발을 하며 토큰과 같은 중요한 사용자 정보를 좀 더 안전하게 저장하고 관리하고자 키체인을 이용해보았는데요, 키체인에 대한 내용도 정리할 겸, 키체인을 어떻게 사용했는지 공유해보려고 합니다 ! Keychain Service 키체인 서비스는 Apple이 제공하는 보안 프레임워크입니다. 공식문서에 따르면, 키체인 서비스 API는 앱에 키체인이라는 암호화된 데이터베이스에 작은 사용자 데이터 비트를 저장하는 메커니즘을 제공하여 암호와 같이 보안에 민감한 데이터를 안전하게 저장하는 데 도움을 줍니다. 즉, 암호화된 데이터베이스인 Keychain에 정보를 저장하여 데이터를 안전하게 저장할 수 있도록 합니다. 키체인은 암호에만 국한되지 않습니다. 신용 카드 정보나 간단한 메..
[운영체제] 교착 상태 (Deadlock) 본 게시글은 KOCW 이화여자대학교 반효경 교수님의 강의를 듣고, 책을 참고하여 정리한 내용입니다. 게시글에 포함되는 이미지 자료는 강의에 포함된 강의 자료입니다. 교착 상태(Deadlock)란? 일련의 프로세스들이 서로가 가진 자원(resource)을 기다리며 block된 상태를 교착상태(deadlock)이라고 합니다. 자원(resource) 하드웨어, 소프트웨어 등을 포함하는 개념 ex) I/O device, CPU cycle, memory space, semaphore 등 프로세스가 자원을 사용하는 절차 Request(요청) -> Allocate(획득) -> Use(사용) -> Release(반납) Deadlock 발생의 4가지 조건 교착 상태가 발생할 조건에는 네 가지가 있습니다. 네 가지 조건 ..
[운영체제] 프로세스 동기화 (2/2) 본 게시글은 KOCW 이화여자대학교 반효경 교수님의 강의를 듣고, 책을 참고하여 정리한 내용입니다. 게시글에 포함되는 이미지 자료는 강의에 포함된 강의 자료입니다. Synchronization과 관련된 고전적인 문제 Bounded-Buffer Problem (Producer-Consumer Problem) Readers and Writers Problem Dining-Philosophers Problem 1. Bounded-Buffer Problem(Producer-Consumer Problem) 시나리오 두 종류의 프로세스 존재 1. 생산자(producer) 프로세스: 데이터 생산해서 공유 버퍼에 넣음 2. 소비자(consumer) 프로세스: 데이터를 버퍼에서 꺼내가서 소비 발생 가능한 문제 1. lo..
[운영체제] 프로세스 동기화 (1/2) 본 게시글은 KOCW 이화여자대학교 반효경 교수님의 강의를 듣고, 책을 참고하여 정리한 내용입니다. 게시글에 포함되는 이미지 자료는 강의에 포함된 강의 자료입니다. 데이터 접근 패턴 프로세스 동기화에 대해 알아보기에 앞서 컴퓨터 시스템 내에서 데이터가 접근되는 패턴에 대해 먼저 알아봅시다. 데이터가 저장되어있는 위치에서 읽어와서 연산을 하고 수정된 결과를 다시 데이터에 반영을 하고, 데이터가 저장되는 Storage Box는 공유되기 때문에 동기화(synchronization) 문제가 발생합니다. 공유 데이터(shared data)의 동시 접근은 데이터의 불일치 문제를 발생시킬 수 있습니다. 그렇기 때문에 데이터의 일관성(consistency) 유지를 위해서는 협력 프로세스 간의 실행 순서를 정해주는 메커..
[Algorithm/Swift] 프로그래머스(Lv.3) - 스티커 모으기(2) 안녕하세요 제인입니다! 오늘은 문제 풀이를 통해 dp 유형 풀이 과정을 정리해보도록 하겠습니다. 해당 문제를 풀면서 대표적인 dp 유형이라고 생각이 들어 정리해두면 좋을 것 같아서 가져왔습니다! 문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 처음 접근 저는 처음에 투포인터로 접근을 했었는데요,, 다른 풀이를 참고해서 dp로 해결한 후 생각해보니까 dp로 풀 수 밖에 없는 문제라는 생각이 드는 것 같습니다..! 처음에 투포인터로 접근한 이유는 start, end 포인터 모두 0에 두고 시작해서 처음으로 떼는 스티커의 인덱스에 start..
[RxSwift] Traits - Driver, Signal, Control Property/ControlEvent 안녕하세요 제인입니다 :) 지난 게시글에 이어 이번 게시글에서는 RxCocoa의 Traits에 대해 정리해보겠습니다. 이번 게시글도 ReactiveX/RxSwift의 Traits 문서 번역을 통해 작성하겠습니다! RxCocoa Traits의 종류 RxCocoa의 Traits로는 Driver, Signal, Control Property/ControlEvent가 있습니다. 하나씩 살펴보겠습니다! Driver Driver는 가장 정교한 trait입니다. UI 계층에서 reactive 코드를 작성하는 직관적인 방법을 제공하거나 애플리케이션을 구동(driving)하는 데이터 스트림을 모델링하려는 모든 경우에 사용할 수 있습니다. + Driver라는 이름이 붙은 이유? Driver의 목적 자체가 애플리케이션을 구..
[RxSwift] Traits - Single, Completable, Maybe 안녕하세요 제인입니다! 오늘은 Traits가 무엇인지에 대해 알아보고, RxSwift의 Traits에 대해 정리해보겠습니다. (RxCocoa의 Traits는 다음 게시글에서 이어서 정리하도록 할게요!) 이번 게시글은 ReactiveX/RxSwift의 Traits 문서를 번역하면서 Traits에 대해 정리해보도록 하겠습니다. Traits란? Swift는 애플리케이션의 정확성과 안정성을 향상시키고 Rx 사용을 보다 직관적이고 간단하게 만드는 데 사용할 수 있는 강력한 유형 시스템을 갖추고 있습니다. Traits는 인터페이스 경계를 넘어 관찰 가능한 시퀀스 속성을 전달하고 보장하는 데 도움이 될 뿐만 아니라 모든 컨텍스트에서 사용할 수 있는 원시 Observable과 비교할 때 문맥적인 의미를 제공하고 더 구..