반응형

분류 전체보기 209

안드로이드 버튼 클릭 시 퍼지는 effct주기(Ripple Effect)

안드로이드에선 기본적으로 버튼을 추가하면 클릭 시 해당 부분부터 퍼지는 이펙트가 내장되어있다. 하지만 버튼에 색상을 넣기 위해 background를 설정하면 이러한 이펙트가 사라지게 된다. 그래서 이번 글에선 이러한 퍼지는 이펙트를 직접 custom하여 버튼에 추가하는 방법을 알아보자. 일단 res/drawable폴더에 원하는 이름의 xml파일을하나 생성한다. 여기선 btn_effect.xml이라는 파일을 생성하도록 하겠다. 위와 같이 추가하고, 이를 적용시킬 버튼에 background로 설정해주도록 한다. . . 생략 . . . . 생략 . . 위에선 검은 배경에 회색 이펙트를 주어서 잘 안보이는데, 직접 색을 바꿔서 해보는걸 추천한다.

Geocoder를 사용해 주소를 좌표로 변경하는 방법(안드로이드, Koltin)

안드로이드에서 위치를 사용해 무언가 작업을 하려고 할 때 좌표를 주소로 바꾸는 경우도 필요하지만, 반대로 주소를 좌표로 바꾸는 경우도 필요하다. 이번 글에선 후자의 작업을 Geocoder를 사용해서 해결하는 법을 알아보도록 하자. private fun searchAddress(address: String){ lateinit var list: MutableList try{ list = Geocoder(context).getFromLocationName(addr, 5) }catch(e: IOException){ e.printStackTrace() Toast.makeText(context, "Error", Toast.LENGTH_SHORT).show() } if(list.size == 0){ Toast.mak..

백준 1157번. 단어 공부

https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 자세한 내용은 위 링크에서 직접 확인해보도록 하자. 풀이 import java.util.* fun main() { val input = Scanner(System.`in`) val s = input.next().toUpperCase() var max = 0 var res = ' ' for(i in s){ val cnt = s.count{it == i} if(max < cnt){ max = cnt res = i }else if(ma..

백준 2022.01.20

GPS 튀는 현상 보정

졸업 프로젝트 진행하면서 GPS를 사용하는데 실제 테스트를 해보니 GPS위치가 튀어서 한번에 원래 자리에서 몇십미터씩 이동하는 경우가 있었다. 이런 경우를 해결하기 위한 방법을 생각해봤다. 먼저, 필자는 GPS위치를 구하기 위해 LocationManager의 GPS Provider를 사용한다. 그리고 이 GPS Provider에는 좌표값 외에 속도값도 존재하는데, 이 속도값을 사용하여 GPS 보정을 해준다. (속도값은 m/s로 계산된다) 방법은 다음과 같다. 1. 이전에 구한 GPS 위치를 저장해둔다. 2. 현재 GPS Provider에서 구한 속도값을 사용하여 이전 좌표에서 이동 가능한 최대 거리를 계산한다. 3. 현재 구한 좌표가 이 최대 거리를 넘어가서 측정되면 보정을 통해 이동 가능한 최대 거리로..

[알고리즘/정렬] 선택, 버블, 삽입, 병합, 퀵, 힙

프로그래밍 중에 배열이나 리스트 등을 정렬해야 할 때가 있다. 그런 때 사용하는 정렬 알고리즘을 몇 가지 알아보도록 하자. 선택 정렬 배열의 가장 큰(또는 가장 작은)원소를 배열의 끝으로 옮기는 작업을 반복해서 배열을 정렬한다. 동작 과정 최대 원소(또는 최소 원소)를 찾는다. 최대 원소(또는 최소 원소)와 배열의 끝에 있는 원소를 교환한다. 배열 끝의 원소를 다음 반복에서 제외한다. 1~3번을 원소가 하나 남을 때까지 반복한다. 코드 def selectionSort(list): max = 0 if len(list) : 내림차순, < : 오름차순 res.append(left[0]) left = left[1:] else: res.append(right[0]) right = right[1:] elif len..

Computer Science 2022.01.16

(메모리)코드, 데이터, 힙, 스택 영역

프로그램을 실행시키면, 운영체제는 프로그램을 위해 메모리 공간을 할당해준다. 프로그램이 운영체제로부터 할당받는 메모리 공간은 총 4개 영역으로 구분할 수 있다. 코드(Code) 영역 데이터(Data) 영역 힙(Heap) 영역 스택(Stack) 영역 코드(Code) 영역 코드 영역에는 실행할 프로그램의 코드와 매크로 상수가 기계어 형태로 저장된다. 다른 이름으로 텍스트(Text) 영역이라고도 부른다. CPU는 코드 영역에 저장된 명령어를 하나씩 가져가 처리한다. 컴파일 타임에 결정되고, 중간에 변경이 불가능하도록 Read-Only로 되어있다. 프로그램 시작부터 종료까지 메모리에 남는다. 데이터(Data) 영역 프로그램의 전역변수와 정적 변수(static변수 등)가 저장되는 공간이다. 프로그램 시작과 동시에..

Computer Science 2022.01.15

[자료구조] 트리(Tree)

트리(Tree) 트리는 값(노드)들이 나무 가지와 같은 모양을 가지고 있는 자료 구조이다. 트리 내에 있는 각 공간을 "노드"라고하며, 가장 위쪽에 있는 노드를 "루트 노드"라고 한다. 또한 트리는 트리 안에 하위 트리를 가지고, 그 트리가 또 다시 하위 트리를 가지는 재귀적 구조이다. 위 그림에 있는 트리를 보면, 전체 트리에서 다시 왼쪽, 오른쪽으로 나뉘어서 하위 트리를 가지는걸 볼 수 있다. 컴퓨터에서 폴더(Directory)구조가 트리 구조의 예가 될 수 있다. 이제 트리에 대한 용어에 대해서 알아보도록 하자. 노드(Node) 트리를 구성하는 요소(데이터) 각 노드는 키 또는 값과 하위 노드에 대한 포인터를 가지고있다. A, B, C, D, E, F, G, H, I 간선(Edge) 노드와 노드를 ..

Computer Science 2022.01.13

동기(Synchronous)와 비동기(Asynchronous)

프로그래밍을 하다 보면 동기적, 비동기적이라는 말을 듣곤 한다. 여기서 말하는 동기와 비동기가 뭔지에 대해 알아보도록 하자. 동기적 처리(Synchronous) 동시에 일어난다는 뜻, 요청과 결과가 동시에 일어날 때 노드 A와 노드 B사이의 작업 처리 단위를 동시에 맞추겠다. 요청한 결과가 그 자리에서 동시에 주어진다. 비동기적 처리(Asynchronous) 동시에 일어나지 않는다는 뜻, 요청과 결과가 동시에 일어나지 않을 때 노드 사이의 작업 처리 단위를 동시에 맞추지 않겠다. 요청한 결과가 그 자리에서 주어지지 않는다. 네트워크 통신과 같은 시간이 오래 걸리는 작업에 사용된다. 동기와 비동기 길동이는 다가오는 개학 전에 그동안 밀린 숙제들을 끝내려고 했다. 수학, 과학, 영어, 미술 등 길동이가 해야..

Computer Science 2022.01.11

JSON이란?

JSON(제이슨)? JSON이란 JavaScript Object Notation의 축약어로, JavaScript에서 객체를 표현하는 방법이지만, 주로 데이터를 저장하거나 전송할 때 사용하는 경량 DATA 교환 형식으로 사용된다. JSON은 하나의 속성이 키-값의 한 쌍으로 구성되어 데이터를 표현한다. { "name" : "홍길동", "age" : "26" } 위와 같이 name, age라는 '속성'과 홍길동, 26이라는 '값'이 각각 서로 쌍을 짓는 형태이다. JSON은 다음과 같은 문법을 사용한다. JSON객체는 { } (중괄호)로 표기한다. 배열은 [ ] (대괄호)로 표기한다. 각 속성은 Key와 Value쌍으로 이루어지며, 둘은 : (콜론)으로 구분한다. 각 속성들은 , (쉼표)를 사용해서 구분한다..

Computer Science 2022.01.10

탐색 알고리즘(선형, 이진, 해시)

선형 탐색(Linear Search) 선형 탐색은 가장 간단한 탐색 방법이라고 할 수 있다. 위와 같은 배열에서 10을 찾으려고 할 때, 선형 탐색에서는 가장 왼쪽 칸부터 한 칸 씩 오른쪽으로 가면서 각각의 값을 비교한다. 선형 탐색의 경우 단순하며, 이해하기 쉽고 찾는 대상이 앞쪽에 있으면 빠르게 찾을 수 있겠지만 찾는 대상이 뒤쪽에 있으면 그만큼 찾는 속도가 느려진다. 또한 각각의 값들을 일일이 확인해야 하기 때문에 값이 많아질수록 시간이 더 오래걸리게된다. Big-O표기법으론 O(n)으로 볼 수 있다. fun main(){ var arr = arrayOf(1, 5, 63, 51, 8, 97, 13, 15, 22, 30) var cnt = 0 for(i in arr){ if(i == 15) break..

Computer Science 2022.01.09
반응형