| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- GetX
- apk 빌드 과정
- 플로이드워셜
- viewModelScope
- Kotlin
- 데코레이터 패턴
- Android
- 상태관리
- 내부 단편화
- Dispatchers
- 절대 주소
- 자이고트
- 운영체제
- http발전과정
- 물리 메모리
- 리사이클러뷰풀
- 안드로이드
- NestedScrollView
- 뷰홀더
- appcompatacitivity
- 디자인 패턴
- AsyncListDiffer
- 리사이클러뷰
- appcompatactivity
- DiffUtil
- flutter
- 프로세스
- recyclerview
- AAC
- http 역사
- Today
- Total
목록분류 전체보기 (77)
hong's android
문제 설명 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 알고 싶습니다. 예를 들어, s="banana"라고 할 때, 각 글자들을 왼쪽부터 오른쪽으로 읽어 나가면서 다음과 같이 진행할 수 있습니다. b는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. n은 처음 나왔기 때문에 자신의 앞에 같은 글자가 없습니다. 이는 -1로 표현합니다. a는 자신보다 두 칸 앞에 a가 있습니다. 이는 2로 표현합니다. n도 자신보다 두 칸 앞에 n이 있습니다. 이는 2로 표현합니다. a는 자신보다 두 칸, 네 칸 앞에 a가 있..
문제 설명 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다. 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다. 문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요. ..
문제 설명 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다. 예를 들어, 문자열 S = baabaa 라면 b aa baa → bb aa → aa → 의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다. 제한사항 문자열의 길이 : 1,000,000이하의 자연수 문자열은 모두 소문자로 이루어져 있습니다. ..
문제 설명 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 단, 첫 문자가 알파벳이 아닐 때에는 이어지는 알파벳은 소문자로 쓰면 됩니다. (첫 번째 입출력 예 참고) 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 s는 길이 1 이상 200 이하인 문자열입니다. s는 알파벳과 숫자, 공백문자(" ")로 이루어져 있습니다. 숫자는 단어의 첫 문자로만 나옵니다. 숫자로만 이루어진 단어는 없습니다. 공백문자가 연속해서 나올 수 있습니다. 문제 해설 class Solution { public String solution(String s) { String answer = ""; s.subs..
뷰는 어떻게 그려질까? 액티비티는 focus를 받으면 레이아웃을 그리도록 요청한다. 그러면 view tree의 루트노드부터 순회하면서 차례대로 뷰를 그리게 된다.(Android 프레임워크는 레이아웃 그릴 수 있게 하지만 액티비티에서 따로 Root node를 제공해줘야 한다.) view는 자체적으로 생명주기를 가지고 있고 뷰 그룹이 하위 요소들을 그리도록 요청한다. 측정단계와 레이아웃단계를 통해 그려진다. 1.Measure 뷰의 크기를 측정한다. 실제 뷰의 크기를 측정하기 위해 onMeasure()를 호출한다. 부모 뷰와 자식 뷰 간의 크기를 측정하기 위해 아래 클래스들을 사용한다. A. ViewGrop.LayoutParams 자식뷰가 부모뷰에게 자신이 어떻게 측정되는지 요청할때 해당 클래스 사용. B.V..
리플렉션이란? 동적으로 클래스의 정보를 분석하거나, 클래스의 메소드를 호출 할 수 있게해주는 api 리플렉션 단점 1.컴파일 최적화를 하지 못한다. 리플렉션을 실행하는 부분은 미리 실행 내용에 대한 정보를 알지 못하므로 jvm은 컴파일 타임에 최적화 하지 못한다. JIT Compiler의 Bytecode Caching, Opcode Optimization.. 등 초기 호출 이후로는 캐싱을 통해서 Reflection API를 통한 메서드 호출도 최적화된다는 것을 의미한다. 2.정적으로 타입 검사를 하지 못한다. 정적을 타입 검사를 하지 못하므로 런타임에 타입 오류가 날 수 있다. 3.캡슐화 저해 접근 제한자에 상관없이 리플렉션은 접근 할 수 있다. 그럼에도 불구하고 왜 필요한가? 컴파일 타임에는 알 수 없..