본문 바로가기

분류 전체보기

(46)
[알고리즘] 프로그래머스 - 타겟넘버 이번주에 코딩테스트가 예정되어 있다. 그래서 예전의 감각을 되살리려고 DFS, BFS 문제를 연습중이다. 오늘 포스팅은 그중에서도 프로그래머스의 '코딩테스트 고득점 Kit' 중 DFS/BFS 색션에 있는 타겟넘버를 정리해 보았다. 참고로 주로 사용하는 언어가 Kotlin 이기에, 당연히 Kotlin으로 문제풀이를 진행했다. 문제 문제 설명 배열로 주어진 numbers에서 +,- 의 경우의 수를 모두 구해서 마지막 결과값이 target과 동일한 가짓수를 구하는 경우이다. 접근방법 DFS를 이용하여 해결했다. DFS를 이용한 사유는 아래와 같다. 주어지는 숫자 개수가 20개 이하여서 재귀로 돌려도 충분한 시간복잡도가 나온다. BFS로 해도 상관없지만, DFS를 더 좋아한다. 정답코드 class Solutio..
퇴직 - 1년 8개월간의 업무(1) 오늘이 과거의 기억을 가장 잘 기억하는 날일 것이라고 문득 생각이 들었다. 그래서 오늘부터 '1년 8개월간 내가 뭘 했을까' 정리하는 시간을 가져볼 것이다. 각설하고 오늘은 가장 처음 한 프로젝트에 대해서 작성해 보았다. 첫 프로젝트 - 비용정산 이 프로젝트에 대해서 간단히 설명하자면, 회사 법인카드를 사용하고 회사의 관리자 혹은 경영관리 지원팀 등에게 사용한것에 대한 내용 증명을 보내는 것이다. 규모가 크지 않았고, 스프린트가 진행되는 중간에 들어와서 회사에서 새로운 사람이 들어오면 맡기려고 했던 프로젝트라서 들어온 첫 날 오후에 이 프로젝트를 배정받았었다. 모든것이 처음이어서 어안이 벙벙한 와중에 프로젝트를 받게 된 것이다. 3년차라고 해도 하나하나 파악하기도 벅차서 계속 물어봐야 하는데, 코로나로 ..
[운영체제] Interrupt - 인터럽트 [인터럽트] 일반적 컴퓨터 작업에서 키보드 입출력을 수행하는 프로그램을 고려했을 때 사용자가 키보드를 누르면, 장치 드라이버는 장치 드라이버가 컨트롤러에 적재한 적절한 레지스터를 통하여 수행할 작업을 결정한다. 그다음 컨트롤러는 로컬 버퍼로 데이터 전송을 시작하고, 데이터 전송이 완료되면 드라이버에게 작업이 완료되었음을 알린다. 완료가 된 것을 알게 된 드라이버는 데이터나 데이터에 대한 포인터를 반환한다. 그렇다면 이 과정 중에서 컨트롤러가 장치 드라이버에게 작업을 완료했다는 것은 어떻게 알리나 하면 인터럽트를 통해 이루어지게 되는 것이다. [개요] 하드웨어는 어느 순간이든 시스템 버스를 통해 CPU에 신호를 보내 인터럽트를 발생시킬 수 있다.(많은 버스 중 시스템 버스는 주요 구성요소 사이의 주요 통신..
[운영체제] 공부 시작하기 [시작하기] 회사에서 일하다가 운영체제를 다시 공부해야 겠다는 필요성을 느꼈다. 운영체제 책 덮은지 8년이 지났는데.... 일단 시작해봐야 겠다. 읽게 되는 모두가 아는 운영체제 공룡책을 가지고 하게 된다. 화이팅이다. 1.1 운영체제가 할 일 일반적으로 컴퓨터 시스템 구송요서의 개략적 구성도는 아래와 같다. 사용자 -> 응용 프로그램 -> 운영체제 -> 컴퓨터 하드웨어 여기서 재밌는 거는 사용자의 입장에서 보는 시스템에 관한 관점은 서로 다르다. 사용자는 입출력 하드웨어를 가지고 응용 프로그램을 사용하려는 사용자다. 사용자는 응용 프로그램을 통하여 자신의 작업을 수행성을 최대한으로 끌어 올리고자 한다. 다만 컴퓨터 하드웨어 간 자원이 어떻게 쓰이는지는 신경쓰지 않는다. 그래서 운영체제가 자원할당을 효율..
[안드로이드] ConstraintLayout의 속성에 대하여 ConstraintLayout의 속성을 두루두루 알아야 일하기 수월해질거라는 사실에 도달하게 되었다. 고로 오늘은 ConstraintLayout의 속성에 대하여 알아보겠다. 그냥 심플하게 속성에 대해서 알아만 보자 ConstrinatLayout에는 속성이 무지하게 많다. 그래서 카테고리 별로 해당 속성을 볼 것이다. 1. Relative Positioning 흔히 사용하는 layout_constraintStart_toStartOf와 같은 상대적 위치를 지정해주는 속성은 넘어가겠다. 2. Margins ConstraintLayout은 기본적인 Margin은 다른 레이아웃과 마찬가지로 설정해준다. 다른 레이아웃과 다른 점이라면, goneMargin이라는 속성이 사용 가능하다. 만약 A라는 뷰의 타겟 뷰가 없..
[안드로이드] let, run 등에 대하여 코틀린으로 안드로이드를 개발하다보면 누구나 쉽게 let, run, also, apply, with 등과 같은 객체를 본적이 있을 것이다. 여기서 내가 궁금한거는 그래 쓰면 편하긴 한데, 대관절 이것들을 어느 시점에서 어떤걸 써야 하는지가 궁금하다. 그래서 그거에 대하여 정리를 해 볼 것이다. 여러 사이트를 쭈욱 봤을 때, 이러니 저러니 좋은 설명들이 많다. 다만 와닿게 나는 그냥 심플하게 적어둔다. 1. apply apply는 apply가 받는 객체에 대하여 해당 객체의 내부에서 그 객체의 함수를 사용하지 않는다면 사용이 적합하다. 아주 간단하게 설명하자면, 객체 초기화 할 때 쓰자. data class PersonInformation( var name : String = "", var age : Int..
[안드로이드] ConstraintLayout - Group에 대하여 1월 1일 오전은 할일이 없다. 여자친구는 이직한 회사 자기소개 준비중이다. 나는 오후에 약속이다. 갤럭시 A52s 5G 받으러 가야한다. 카이막도 완성되려면 1시간 더 기다려야 한다. 이런 적적하고 뭔가 게임도 하기 싫은 시간에는 역시 블로그 포스팅이 제격이다. 그래서 오늘은 할일도 없는김에 저번에 하던 ConstraintLayout의 가상 오브젝트 중 Group에 대하여 정리할 것이다. - Group 1명 이상의 사람이 모여서 집단을 만드는것을 우리는 영어로 그룹이라고 한다. 이 개념을 안드로이드 View의 시각으로 바라본다면, 1개 이상의 View를 모아서 집단으로 만드는 것이 Group이다. 이러한 Group을 요래조래 해본 결과 아래와 같은 특징을 보인다. 기본적으로 1개 이상을 대상으로 그룹을..
[안드로이드] ConstraintLayout - Barrier에 대하여 오늘은 ConstraintLayout에서 Barrier에 대한 속성에 대하여 정리를 해보려고 한다. - Barrier 배리어는 한국말로 '방어막'이다. 이러한 방어막은 방어막을 쓴 사람을 주위로 일종의 막이 형성되며, 해당 막 바깥과 안쪽 사이의 물리력을 차단해주는 것을 의미한다. 이러한 맥락에서 ConstraintLayout의 배리어의 의미를 주입시켜보자. 일단 Barrier는 자바의 Object를 상속받는 android.view.View를 상속받는다. 그리고 배리어라는 의미로 미루어 보아 무엇인가의 침입을 막는것인데, 사실상 View에서 뭔가의 침입을 막는다는건 다른 View가 영역을 침범하는 것 밖에 없다. 그러면 이러한 맥락에서 미루어 보아, Constraintlayout의 배리어가 하는 역할은 ..