본문 바로가기

전체 글

(96)
[안드로이드] 스레드 프로세스란? 프로세스는 실행 중인 프로그램, 안드로이드로 치면 App이 프로세스이다. App을 실행하면 안드로이드 OS의 메모리에 App이 올라가 실행된다. 스레드란? 프로세스 내에서 수행되는 작업들은 모두 스레드를 통해 이루어진다. 예를 들어, 계산기 어플이 프로세스라면 계산하는 작업은 스레드를 통해 실행된다. 안드로이드에서의 스레드 App을 실행하면 시스템은 메인 스레드를 만든다. 메인 스레드는 위젯, 뷰의 패키지에 있는 구성요소와 상호작용하는 스레드로, UI 스레드라고도 불린다. 화면에 XML을 출력해주거나, 버튼 클릭에 대한 이벤트 동작 등 모두 메인 스레드가 담당한다. 따라서, 시간이 긴 작업(네트워크, 데이터 쿼리 등)을 UI 스레드에서 진행하면 작업 시간동안 UI가 차단되며, UI 차단이 몇..
[안드로이드] 동기와 비동기 동기와 비동기 동기(Synchronous): 동기란 어떠한 순차적인 작업 A, B, C가 있을 때, A작업이 끝날 때까지 B와 C작업이 대기 즉, 한 번에 하나씩 작업을 처리하는 방식이다. 비동기(Asynchronous): 비동기란 A가 작업 중이여도 B와 C를 작업할 수 있는 상태, 즉, 자원을 효율적으로 사용하여 여러가지 작업을 진행할 수 있는 방식이다. 비동기 방식을 사용해야 하는 이유 사실 간단한 소규모 프로젝트에서는 비동기 방식을 사용하지 않아도 어떠한 문제가 없었을 것이다. 그러나 대규모, 플랫폼 단위로 넘어가면 다양한 작업들이 많아질 것이다. 예를 들어, 어떠한 네트워크 작업이 이루어지는데 이 작업이 생각보다 오래걸린다면 사용자는 이 네트워크 작업이 다 이루어질 때까지 해당 어플을 사용하지 ..
[프로그래머스] 2022 KAKAO BLIND RECRUITMENT 양궁대회 with Kotlin 문제 라이언과 아파치가 양궁 결승 대회를 한다. 라이언이 챔피언 타이틀을 갖고 있기 때문에 룰은 아파치에게 유리한 쪽으로 적용되었다. 과녁의 점수는 0점부터 10점까지 있으며, 선수는 각 n개의 화살을 지급받는다. 과녁에 맞춘 화살의 개수로 중복 없이 둘 중 한명만 각 점수를 얻을 수 있다. 화살의 개수가 같을 경우 아파치의 점수로 인정된다. 예를 들어 10점 과녁에 아차피가 2발, 라이언이 2발 맞췄다면, 아차피가 10점을 획득한다. 이때, 아파치가 점수 별로 화살을 맞춘 과녁이 배열로 주어졌을 때, 라이언이 아파치를 상대로 가장 큰 격차를 내서 이길 수 있는 경우를 반환하면 된다. 조건 화살은 모두 소진해야 한다. 만약 이길 수 없고, 지거나 비기는 경우뿐이라면 [-1]을 반환한다. 점수 차가 같은 ..