힙 정렬 힙 정렬이란? - 힙의 특성을 이용한 정렬 수행시간 : 합병정렬과 동일한 O(nlogn), 삽입정렬과 동일한 제자리 정렬 (Sort in Place) 힙이란 ? - 완전 이진 트리에 가까운 형태 이진 트리란? - 각 노드의 자식수가 2이하인 경우 완전 이진 트리란 ? - Root(맨 위)노드부터 Leaf(가장 아래)노드까지 빠짐없이 채워져 있는 트리 여기서 root의 어원은 트리를 뒤집었을 때 가장 첫번째 . 뿌리라고하여 root라고 부른다. 완전 이진 트리의 조건은 왼쪽부터 차례로 채워야함. 만약 ㅇ ㅇ ㅇ ㅇ ㅇ 이렇게 있으면 왼쪽아래가 비어있다. 즉 왼쪽부터 차례로 채우지 않았기 때문에 완전이진트리가 아니다. ㅇ ㅇ ㅇ ㅇ ㅇ ㅇ ㅇ ㅇㅇㅇ 이렇게 있으면 오른쪽아래는 비어있지만 왼쪽부터 채..
합병 정렬 알고리즘 합병 정렬이란? - 합병을 이용한 알고리즘 합병이란? - 두개를 합치는 것 무엇을 합병할 것인가? 두개의 정렬된 배열을 하나의 배열로 합병 입력 : n개의 숫자 출력 : 정렬된 n 개의 숫자 ( 오름 차순 ) ex ) 배열 1 : 배열 2 : -> 결과 : Point : 두 정렬은 이미 정렬이 되어 있다. 알고리즘 : 배열 1과 배열 2의 첫번째 숫자를 비교해서 저 작은걸 결과의 첫번째에 넣어준다. 여기서는 배열 1의 첫번째 숫자 (1) 이 더 작으므로 1을 넣는다. 그 후 더 작았던 배열 1의 첫번째 숫자를 삭제한다. 그 후 배열 1의 첫번째 자리와 배열2의 첫번째 자리를 비교하는 작업을 반복한다. Step0 : 배열 1 : 배열 2 : -> 결과 : Step1 : 배열 1 : 배열..
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); 화면 터치 막기 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE); 화면 터치 막은거 풀기. 이 두가지를 적절히 분배하여 자신이 원하는 동작을 만들 수 있습니다. 만약 fragment 내에서 사용하고 싶다면 바로 getWindow()를 호출하지말고 getActiviry().getWindow() 로 호출하면 됩니다. 레이아웃 또는 뷰에서 사용할 수 있는 setClickable(false) 이것도 찾았었지만, 제 코드에서는 작동이 되지 않아 위에 소개한 코드로 해결하였습니다.
삽입정렬이란 삽입하여 정렬하는 것이다. 입력 : n개의 숫자 출력 : n개의 숫자가 점점 커지는 순서로 정렬 , 가장 큰 숫자가 가장 오른쪽으로 간다. ( 오름차순 ) 무엇을 삽입할 것인가? Key 값과 정렬된 리스트가 주어졌을 때, Key 값을 정렬된 리스트의 알맞은 위치에 삽입 Key가 3이고 정렬된 배열이 일 때 1과 2 사이에 3을 넣음으로써 으로 정렬함. 정렬을 시작할 때 처음 값 한개는 미리 넣어둔다. 두번째 숫자부터는 Key 값으로 생각을 하고 삽입한다. 즉 일 때 이렇게 들어간다고 생각하면 된다. 과정은 만약 삽입할 key가 가장크면 맨뒤에 남고, 아니면 그 앞자리와 자리를 바꿈. 이걸 앞자리보다 key가 클때까지 반복하면 자기자리에서 멈추게 된다. 수행시간을 분석해보면, 몇번 째 자리가 ..
안드로이드에서는 배터리 상태에 대한 값을 계속해서 불러오는것을 권장하지 않는다. 이러한 행동 자체가 배터리 소모가 크기 때문이다. 그래서 배터리가 낮아졌을때 (보통 20%이하) 그보다 높을때로 구분하여 동작하기를 권장한다. 그렇다면 어떻게하면 배터리가 낮을때와 보통이 되었을 때를 알 수 있을까? 이는 안드로이드 Developer에 자세히 나와있지만, 사용법에 대해서 햇갈릴 수 있으니 내가 사용한 방법을 올려보겠다. 나는 receiver로 등록하여, 배터리의 변경 상태가 들어오면 그때에 receiver에서 내가 원하는 동작하도록 설계하였다. 전 게시글인 통화 상태 확인하는 broadcast와 동일한 곳에서 작동하게 만들었다. 2020/03/18 - [인턴/안드로이드] - 안드로이드 전화 받기, 전화 끊기,..
(BroadcastReceiver)브로드 캐스트 리시버는 메니페스트에 한번 등록해놓으면, 앱이 실행되는 동안, 브로드 캐스트가 들어올 때 한번씩 실행해준다. 우선 1단계 manifests 에 Callrecevier를 등록해준다. 여기서 android.intent.action.BATTERY_LOW는 배터리가 없을 때의 상태도 받기위해 추가하였다. 전화만 사용할거면 없어도 된다. 2단계 CallReceiver.java 를 만든다. import android.annotation.SuppressLint; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import andro..
안드로이드를 사용하다가 벨소리, 미디어가 아닌 알람 등을 조절하고 싶은 경우가 생긴다. 그럴경우에는 AudioManager 를 사용하여 조절할 수 있다. 아래에 있는 함수를 Activity 클래스 안에 추가해주면 벨소리에 대한 볼륨을 조절할 수 있다. 아래는 볼륨 조절 키를 통해 볼륨을 조절해주는 함수이다. public boolean onKeyDown(int keyCode, KeyEvent event) { AudioManager mAudioManager = (AudioManager)getSystemService(AUDIO_SERVICE); switch (keyCode) { case KeyEvent.KEYCODE_VOLUME_UP : mAudioManager.adjustStreamVolume(AudioMa..