| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- jvm 작동 원리
- 안드로이드 유닛 테스트
- 안드로이드 레트로핏 사용법
- rxjava hot observable
- 서비스 vs 쓰레드
- 안드로이드 레트로핏 crud
- 서비스 쓰레드 차이
- rxjava cold observable
- ANR이란
- 안드로이드 유닛 테스트 예시
- android ar 개발
- android retrofit login
- jvm이란
- 클래스
- 안드로이드 유닛테스트란
- 안드로이드 라이선스
- 2022 플러터 안드로이드 스튜디오
- 안드로이드 라이선스 종류
- 스택 자바 코드
- 플러터 설치 2022
- 안드로이드 os 구조
- rxjava disposable
- 큐 자바 코드
- 스택 큐 차이
- ar vr 차이
- 멤버변수
- 2022 플러터 설치
- Rxjava Observable
- 자바 다형성
- 객체
- Today
- Total
목록전체 글 (1110)
나만을 위한 블로그
플러터 인강을 듣는데 ListView.builder()를 아래처럼 구현하는 게 보였다. @overrideWidget build(BuildContext context) { return ListView.builder( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), ... ), );} 플러터는 처음이라 그냥 저런 방식으로도 구현하는 거겠거니 하고 넘겼다. 완강 후 같은 강의를 듣는 동생한테 이 옵션 쓰는 거 안 좋은 거 같다는 말을 들어서 찾아본 내용을 정리한다.먼저 플러터 문서는 shrinkWrap 프로퍼티를 아래와 같이 설명한다. https://api.flutter.dev/flutter/widgets/Scroll..
https://dart.dev/language/typedefs TypedefsLearn about type aliases in Dart.dart.dev타입 별칭(type alias)은 typedef 키워드로 선언되고 타입을 간결하게 참조하는 방법이다. IntList라는 타입 별칭을 선언하고 쓰는 예는 아래와 같다 typedef IntList = List;IntList il = [1, 2, 3]; 타입 별칭은 타입 파라미터를 가질 수 있다 typedef ListMapper = Map>;Map> m1 = {}; // 장황함ListMapper m2 = {}; // 같은 내용을 더 짧고 명확하게 2.13 이전엔 typedef가 함수 타입으로만 제한됐다. 새 타입 정의를 사용하려면 최소 2.13 이상의 버전을 써..
같은 문자는 반드시 연속해서 나타나야 그룹 단어라 한다고 한다. aacddddbb는 a가 2번, c가 1번, d가 4번, b가 1번 나타나기 때문에 연속해서 나타난다고 볼 수 있어 그룹 단어라고 볼 수 있을 것이다. 그러나 aabbbccb는 c 다음에 앞에 4번 나왔던 b가 나오기 때문에 그룹 단어라곤 할 수 없다.그럼 생각해볼 수 있는 방법은 n+1번 인덱스와 n번 인덱스의 문자를 비교해서 서로 다를 경우 리스트에 담고, Set으로 바꿨을 때 리스트의 길이와 Set의 길이가 같다면 그룹 단어라고 판단하는 것이다.aacddddbb는 앞의 로직으로 리스트에 담는다면 a, c, d, b가 담길 것이다. 나란히 존재하는 문자 2개를 각각 비교해서 다를 경우에만 담기 때문에 a, c, d, b 순서로 담길 것이..
입력값을 받으면 몇 개의 크로아티아 알파벳이 되는지 세서 출력해야 한다. 목록에 없는 문자면 1글자로 취급하는 조건이 있다.dz=는 먼저 처리해서 d- 또는 z=로 잘못 인식되지 않게 순서를 설정하는 게 중요하다. fun main() { var word = readln() val patterns = listOf("dz=", "c=", "c-", "d-", "lj", "nj", "s=", "z=") for (pattern in patterns) { word = word.replace(pattern, "*") } println(word.length)} 개수 세라고 미리 값들을 알려주기 때문에 이 값들을 리스트로 선언해 둔다. arrayOf를 써서 배열로 선언해도 상관없..
가장 많이 사용된 알파벳 개수를 카운팅하는 문제다. 대소문자는 구분하지 않는다니까 대문자 또는소문자로 통일시켜서 처리하면 될 것이다.바로 떠오르는 방법이라면 A~Z까지의 알파벳 26자를 담는 배열을 만들고, 입력값을 순회하면서 발견한 알파벳을 배열의 특정 인덱스에 담는 것이다.그러나 배열 만드는 건 하겠지만 a나 d같은 알파벳인지 어떻게 확인해서 배열에서 해당 인덱스를 어떻게 업데이트할 것인지가 문제다.우선 이렇게 풀 수 있다. fun main() { val word = readln().uppercase() val count = IntArray(26) // 알파벳 개수 카운트 for (char in word) { // 'A'를 빼면 0부터 시작하는 인덱스가 됨 ..
입력받은 단어가 뒤집어도 입력받은 단어와 일치하는지 확인하고 일치하면 1, 아니면 0을 리턴시키면 된다.최대 단어 길이는 100이기 때문에 간단하게 아래처럼 작성해도 풀린다. fun main() { val word = readln() val reversed = word.reversed() println(if (word == reversed) 1 else 0)} 그러나 단어 길이가 길다면 이 방식으론 시간 제한에 걸릴 수 있다.다른 방식으론 투 포인터라는 방법으로 단어의 처음, 끝에서부터 각각 끝, 처음으로 이동하면서 보이는 단어들이 서로 일치하는지 확인하는 방법이 있다. fun main() { val word = readln() var left = 0 var right =..
