목록분류 전체보기 (61)
계발자 블로그

뷰 결합 | Android 개발자 | Android Developers 뷰 결합 뷰 결합 기능을 사용하면 뷰와 상호작용하는 코드를 쉽게 작성할 수 있습니다. 모듈에서 사용 설정된 뷰 결합은 모듈에 있는 각 XML 레이아웃 파일의 결합 클래스를 생성합니다. 바인딩 developer.android.com ViewBinding은 기존 findViewById와 같이 뷰와 코드를 연결 시켜주는 기능입니다. 이런 식으로 버튼 3개를 만들었습니다. viewBinding을 사용하기 전에는 findViewById를 이용해왔습니다. 3개정도야 코드 작성이 빠르고 보기 쉬울수 있지만 프로젝트가 커질수록 작성해야 하는 코드가 정말 길어지게 됩니다. 그래서 Kotlin-Extiensions를 사용해 findViewById처럼 ..

Bottom Navigation View에 대해 알아보겠습니다 Bottom Navigation View는 안드로이드 환경에서 흔히 볼 수 있는 하단 메뉴 바입니다. 카카오톡이나 인스타그램 등 거의 모든 앱에서 볼 수 있습니다. 바로 만들어 봅시다. 리소스 폴더에 메뉴를 만들어줍니다. 네비게이션 바에 나타나는 메뉴를 만들어주는겁니다. Resource type을 Menu로 해주세요 메뉴 리소스 파일을 만들었으면 안에 어떤 메뉴를 넣을건지 작성해줍니다. 아이콘은 백터 이미지로 넣었습니다. 그리고 메인 액티비티 레이아웃으로 와서 바텀 네비게이션 뷰를 넣어줍니다. 여기서 아이콘의 색이나 네비게이션 바의 배경 색 등을 설정해 줄 수 있습니다. 네비게이션 뷰 위에는 프래그먼트가 들어갈 레이아웃을 하나 만들어줍니다. ..

프래그먼트 | Android 개발자 | Android Developers A Fragment represents a behavior or a portion of user interface in an Activity. You can combine multiple fragments in a single activity to build a multi-pane UI and reuse a fragment in multiple activities. You can think of a fragment as a modular section developer.android.com Fragment는 Activity내에서 화면 일부를 나타내는 안드로이드 구성 요소 중 하나입니다. 한 Activity내에서 여러 fragment..

문자열 알고리즘을 풀 때 가끔 기억이 안나서 한번에 정리 하면서 공부 해보려고 합니다. toLowerCase() 문자열을 소문자로 변환 해줍니다. toUpperCase() 문자열을 대문자로 변환 해줍니다. String s = "abcdefg1234"; s = s.toUpperCase(); System.out.println(s); s = s.toLowerCase(); System.out.println(s); replace(기존문자, 바꿀 문자) 해당 문자열의 일부를 치환 해줍니다. String s = "abcdefg1234"; s = s.replace("1234", "hijk"); System.out.println(s); substring() 문자열의 특정 인덱스만큼 혹은 특정 인덱스 이후로 잘라냅니다. ..

유클리드 호제법이란? 유클리드 互除法 / Euclidean algorithm 互(서로 호), 除(나눌 제, 뺄 제) 서로 나눈다는 의미입니다. 두 양의 정수, 혹은 두 다항식의 최대공약수를 구하는 알고리즘입니다. 인류 최초의 알고리즘이라고 하네요. gcd는 최대공약수를 뜻합니다. Greatest Common Divisor의 줄임말입니다. 자바 코드로 나타내면 // 반복문 방식 int gcd(int a, int b) { while(b != 0) { int r = a % b; a = b; b = r; } return a; } // 재귀 방식 int gcd(int a, int b) { if(a%b == 0) return b; return gcd(b, a % b); } 이렇게 됩니다. 최소공배수는 a * b /..
삽입정렬(Insertion Sort)이란 ? 삽입정렬은 정렬되지 않은 데이터를 앞에서 부터 차례대로 정렬된 부분과 비교하여 자신의 위치를 찾아 삽입하는 정렬 알고리즘입니다 5 3 2 4 1 이런 배열이 주어졌을 때 3은 5의 앞으로 가야 하기 때문에 3을 빼서 3의 자리로 5를 밀고 원래 5가 있던 자리에 3을 삽입합니다. 3 5 2 4 1 그 다음 2는 2는 5보다 앞으로 가야 됩니다 위에서 3이 했던 것과 같이 2를 빼서 5를 밀고 앞에 3이 또 있으니까 3과 비교해 줍니다 3보다도 앞으로 가야 하니까 3을 또 밀어주고 2는 맨 앞으로 가게 됩니다 이렇게 앞에 수와 비교해 주면서 맞는 위치에 삽입해 주는 것입니다. public int[] solution(int n, int[] arr) { for(in..
버블정렬(Bubble Sort)이란 ? 버블정렬은 서로 인접한 두 수를 검사하여 정렬하는 알고리즘입니다. 9 8 7 3 2 5 4 1 6 이런 배열이 있다면 8 9 7 3 2 5 4 1 6 8 7 9 3 2 5 4 1 6 8 7 3 9 2 5 4 1 6 ... 8 7 3 2 5 4 1 9 6 8 7 3 2 5 4 1 6 9 이렇게 가장 큰 수가 맨 뒤로 가게 됩니다. 그럼 그 다음부터는 8번째 원소 까지만 정렬을 해줍니다. public int[] solution(int n, int[] arr) { for(int i=0; i
선택정렬(Selection Sort)이란 ? 선택정렬은 데이터를 정렬 할 때 가장 작은 수를 선택 하여 맨 앞자리의 수와 바꿔주는 정렬입니다. 9 1 8 4 2 3 5 6 7 이런 배열이 있다면 1 9 8 4 2 3 5 6 7 1 2 8 4 9 3 5 6 7 1 2 3 4 9 8 5 6 7 ... 1 2 3 4 5 6 7 9 8 1 2 3 4 5 6 7 8 9 순으로 정렬 되는 것이 선택정렬입니다. public int[] solution(int n, int[] arr) { for(int i=0; i
에라토스테네스의 체? 에라토스테네스의 체란 n까지의 소수를 찾는 알고리즘입니다. 소수를 찾는 알고리즘 중에 가장 빠른 방법입니다. 소수는 약수를 1과 자기 자신만 갖는 수를 말합니다. n을 15라 가정하면 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 이렇게 2부터 15까지의 배열을 하나 만듭니다. (1은 소수가 아니기 때문에 2부터 합니다.) 그리고 각 수의 배수들을 지워줍니다. (본인은 지우지 않음) 그럼 2의 배수 3의 배수들을 지워 가다 끝까지 가면 지워지지 않은 남는 숫자들이 소수입니다. import java.util.*; public class Main { public int solution(int n) { int answer = 0; int [] ch =..

BFS란? Breadth-First Search의 줄임말로 너비 우선 탐색이라고 합니다. 그래프 탐색 알고리즘 중 하나로 루트 노드(혹은 다른 임의 노드)에서 시작해서 인접한 노드를 먼저 탐색하는 방식입니다. 두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 이 방법을 선택합니다. 특징 재귀적으로 동작하지 않는다. 큐(Queue) 자료구조를 사용한다. 0 - 1 - 2 - 3 - 4 - 5 - 6 순으로 탐색하게 됩니다. 코드로 구현해 보기 BFS에서는 queue를 직접 생성해줍니다. DFS에서 stack은 컴퓨터가 항상 스택의 원리를 사용하고 있기 때문에 굳이 새로운 스택을 사용하지 않아도 됬습니다. 각 노드의 레벨을 나타내기 위한 L을 만들었습니다. 성공적으로 너비 우선 탐색이 실행된 모습..