Apple is Apple
[BOJ - 28353] [백준 - 28353] 고양이 카[Silver - 3] [Solved by Kotlin]
PS/BOJ 2025. 2. 18. 16:33

문제 설명찬우는 친구들과 고양이 카페에 가려 한다.고양이 카페에는 N마리의 고양이가 있다. i번째 고양이의 무게는 w_i이다. 찬우와 친구들은 모두 고양이를 사랑하기 때문에 무릎 위에 고양이를 정확히 2마리 데리고 있으면 행복해진다. 하지만 허약한 찬우와 친구들은 데리고 있는 두 고양이의 무게의 합이 k를 넘는다면 버티지 못할 것이다.각 고양이의 무게와 한 명이 버틸 수 있는 최대 무게 k가 주어질 때 최대 몇 명이 행복해질 수 있는지 구해보자.입출력 예입력첫째 줄에 정수 N과 K가 공백으로 구분되어 주어진다. ( 1  10^9) 둘째 줄에는 각 고양이의 무게를 의미하는 N$N$개의 정수 w1,w2,⋯,w_1, w_2, ..., w_N이 공백으로 구분되어 주어진다. (1≤ wi ≤K) 출력    행복해질..

[Android] SingleLiveEvent
Android 2025. 2. 18. 11:25

과거 기술이다. 현재는 Flow, Channel 등으로 이벤트를 처리할수 있다.과거에 했던 프로젝트 중 경험했던 것을 다시 기술해본다.  SingleLiveEventLiveData - View와 ViewModel사이 통신을 편리하게 하기 위해 사용하는 Observable한 객체View는 ViewModel 의LiveData의 변화를 감지하고 이를 Observing하여 View의 상태를 업데이트 한다. 즉, 화면에 연속적으로 표시 되는 데이터에 적합하다. 여기서, 사용자의 이벤트 같은 것을 생각해보자버튼 클릭, Snackbar, toast, dialog 등 이벤트에 의해서 발생하는 행위들을 봐보자이들은 사용자의 행위에 의해 1번씩 클릭 되거나, 발생하는 컴포넌트들이다.여기서 이것들을 LiveData를 사용하..

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력해주세요.
article thumbnail
[OS] 8 - Process Synchronization
CS/OS 2024. 10. 11. 16:33

Background기계어란? -> 0, 1로 이루어진 언어 (컴퓨터가 해석가능함)어셈블리어란? -> 기계어를 사람이 읽을 수 있도록 만들어 놓은 언어 (기계어에 1대1 매칭이 가능)고수준 언어란? -> 문장 한개가 복수 개의 기계어에 매칭 가능 -> 동기화 문제 발생 가능성 대두 프로세스는 동시 실행이 가능 -> 언제든 중단 될 수 있으며, 부분적으로만 완료 될 수도 있음공유 데이터에 대한 동시 액세스는 데이터 부정합성이 발생 될 수 있음--> 생산자-소비자 문제가 대두됨Race Condition -> 공유 자원을 동시에 액세스하는 현상 -> 프로세스 실행 순서에 따라 값이 달라지는 현상이 발생함Critical Section공유 데이터룰 액세스하는 코드-> Critical Section은 통시에 두 프로..

article thumbnail
[OS] 7 - CPU scheduling (2)
CS/OS 2024. 8. 27. 16:54

CPU Scheduling 알고리즘을 살펴보자FCFS (First-Come, First-Served) schedulingSJF (Short-Job-First) schedulingPriority schedulingRR (Round-Robin) schedulingMultiLevel Queue schedulingMultiLevel Feedback Queue scheduling* 이 글에서 쓰이는 Burst time은 프로세스의 실행시간을 뜻한다.FCFS (First-Come, First-Served)** Nonpreemptive 방식으로 동작 말그대로 먼저 들어온 프로세스가 먼저 처리 되는것을 뜻한다. ex)다음과 같이 3개의 프로세스와 Burst Time이 주어진다. P1은 0에 들어와 24만큼 수행하고 종..

[OS] 6 - CPU Scheduling (1)
CS/OS 2024. 8. 23. 22:40

ConceptCPU 스케줄링은 CPU의 효율을 최대화하기 위해 사용되는 개념이다.CPU를 끊임없이 사용해야 CPU의 효율이 오르기에 메모리에 여러개의 프로세스를 동시에 올려 필요할 때 마다 CPU에 할당을 하게 된다. 이때 어떤 프로세스 결정하는 것이 CPU 스케줄링이다. CPU SchedulerCPU scheduler는 CPU 스케줄링 중 어떤 프로세스를 골라서 CPU에 할당을 할 것인지를 정하는 요소이다.스케줄러는 다음와 같은 상황에서 동작을 한다.프로세스가 Running 상태에서 Waiting 상태로 바뀔 떄 (ex. I/O 요청)프로세스가 Running 상태에서 Ready 상태로 바뀔 떄 (ex. 인터럽트)프로세스가 Waiting 상태에서 Ready 상태로 바뀔 떄 (ex. I/O 완료)프로세스 ..

article thumbnail
[OS] 5 - Thread
CS/OS 2024. 8. 6. 15:42

Thread 정리CPU의 기본 사용 단위이다.쓰레드 ID, 프로그램 카운터, 레지스터 셋, 스택을 포함하고 있다.모든 프로세스에는 한 개 이상의 쓰레드를 갖고 있으며, 같은 프로세스 동안에는 서로 다른 쓰레드들이 자원을 공유한다. 사용되는 이유  - 현대의 프로그램은 멀티쓰레드 기반 - 프로세스 생성은 무거운 작업이지만 쓰레드 생성은 가벼운 작업 - 코드 작성이 간단해 효율성이 좋음 - 커널은 보통 멀티쓰레드를 사용 중  멀티 쓰레드의 장점반응성사용자 인터페이스에 중요한 프로세스의 일부가 차단된 경우 지속적인 실행을 허용할 수 있음자원 공유 스레드는 프로세스 리소스를 공유하며, 공유 메모리나 메시지 전달보다 쉬움경제성프로세스 생성보다 적은 가격이 들어가고, 쓰레드 스위칭 하는데 생기는 오버헤드가 컨텍스트..

보호되어 있는 글입니다. 내용을 보시려면 비밀번호를 입력해주세요.
article thumbnail
[OS] 4 - 프로세스 간 통신
CS/OS 2024. 7. 20. 13:11

프로세스 간 통신 (Inter-Process Comunication - IPC)시스템의 프로세스는 독립적으로 동작하거나 협력적으로 동작한다.협력적으로 동작하는 것에 주목해보자, 혼자서 동작해도 문제가 없지만 왜 협력적으로 동작하는 걸까?다음과 같은 장점이 있어 협력적으로 동작하게 된다.정보 공유계산 속도의 향상편의성이러한 장점을 살리기 위해 프로세스는 협력적으로 동작하는데, 그러기 위해서는 데이터를 주고 받아야 한다. 어떻게 데이터를 주고 받아야 하나?--> IPC (Inter-Process Communication)을 통해 프로세스 사이에서 데이터를 주고 받는다. IPC에는 크게 2가지 모델이 있다.Shared Memory - 한 메모리를 공유해서 메모리를 통해 정보 공유Message Passing -..

[Gradle] toml이란?
Android 2024. 7. 4. 17:18

안드로이드 프로젝트를 생성하면 앱 수준의 build.gradle에 dependencies 블럭에 프로젝트에 사용할 라이브러리를 선언한다. 프로젝트 단위에서 특별하게 라이브러리를 관리할 정책이 없다면 dependencies 한 블럭에 라이브러리를 모두 써내려나간다.  이는 관리되는 라이브러리의 수가 많아짐에 따라 중복되는 버전을 일일이 하드코딩할 수도 있고(휴먼에러), 이로인해 어느 한 쪽의 버전이 달라지게되면서 빌드 오류나 예기치못한 버그를 일으킬 수 있다. 이를 해결하는 방법으로 buildSrc나 gradle 분리등으로 해결할 수 있는데, 최신 안드로이드 스튜디오 버전(최신 Gradle)에서 프로젝트 생성시 자동으로 적용되는 toml 방식에 대해 알아보고자한다. TOMLTOML(Tom's Obvious..