일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kotlin
- 플러터
- 초기화
- Widget Tree
- 싱글톤
- 프리즈드
- Java
- 에러
- 자바
- 자료구조
- dart
- Android
- 비동기 처리
- Singleton
- element tree
- 프로그래머스
- 알고리즘
- dfs
- 앱아이콘 변경
- zwj
- 완전탐색
- 코틀린
- Lazy
- IOS
- 플러터 동작
- 거리알고리즘
- linebreak
- 재귀
- flutter
- Render object tree
- Today
- Total
목록분류 전체보기 (80)
모바일 개발하는 자바리안의 메모장
Kotlin은 변수 초기화 지연을 도와주는 위한 유용한 기능이 존재하는데, 나에게 매우 잘 어울리는 키워드인 lazy 키워드다. lazy초기화의 경우 read-only 변수, 즉 val 변수에만 사용할 수 있다. 우선 예제 코드를 보자 : class JavarianActivity : AppCompatActivity(){ val sampleTextView: TextView by lazy { // Lazy init. findViewById(R.id.tv_1) as TextView } fun updateTextView() { sampleTextView.text = "Hi" } } 앞서 설명한 바와 같이, 코틀린에서의 모든 변수(property)는 초기화를 필수로한다. 일반적인 초기화라면 sampleTextVi..
코틀린은 슬기로운 초기화를 위해 다양한 기능들을 제공해준다. 이는 자바에서 쉽게 발생하던 NullPointerException에 대한 사전 방지를 위해 선언 단계부터 엄격하게 관리를 해주는거라는데,, Null Safety를 위해 코틀린에선 어떤 방식으로 Nullable를 관리해주는지 알아보자. 아래 코드를 보자 : fun main() { var str : String = "text" str = null // Error } 위와 같은에러가 발생한다. 왜와이? 익숙하게 선언한 String 타입에 null은 해당되지 않기 때문이다. 그렇다면 nullable한 타입은 어떻게 선언해주면 될까? fun main() { var str : String? = "text" str = null // Good } 간단하게 타..
딱 처음 Kotlin을 접하고 볼 수 있었던 자바와는 살짝 다른 변수 선언과 초기화,, 차이점 2가지는 다음과 같다 : 첫번째, 변수의 타입을 변수명 뒤에 명시해준다. Java) String str = "text"; Kotlin) var str : String = "text" Kotlin의 경우 변수명 : 데이터타입 형태로 변수를 선언한다. 타입이 굳이 명시하지 않아도 똑똑한 코틀린 컴파일러가 알아서 해결해준다. 보다 쉬운 이해를 위해 아래 코드를 보자 : fun main() { val str = "I am a string" checkDataType(str) } fun checkDataType(input : Any) { when(input) { is String -> print("Type is Strin..
https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, 10,000이하의 자연수이다. www.acmicpc.net 유호석 강사님의 알고리즘 강의 중, 투포인터를 배우며 접한 예제 문제. 두개의 포인터를 활용하여 [정답을 찾기 위해 봐야 하는 것들]에 접근할 수 있는 알고리즘이다. 즉, 답을 구하기 위한 정말 필요한 데이터에만 접근하여 전체적인 탐색범위를 크게 압축할 수 있는 알고리즘이다. 이번 예제는 주어진 수열에서 L(eft), R(ight) 두 포인터를 활용하여, 확인한 범위를 줄이고 늘리며..
https://programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 programmers.co.kr 완전탐색으로 풀었다가 효율성 테스트에서 좌절,, 풀이를 찾다가 Trie라는 자료구조에 대해 처음 접할 수 있었다. Trie는 아래와 같이 Tree 형태로 String을 Character로 쪼개어 각 노드에 입력한다 : 새로운 문자열을 추가할 때마다 문자열에 포함된 Charcter 노드의 카운트수를 더해준다. 각 Query에서 ?가 위치한 바로 앞 Character 노드의 Count를 반환하여 답을 구할 수 있었다. 실행 순서는 다음과 같다 : 1. Trie와 Node 클레스 및 입력, Count 메소드 생성 2. 입력 문자열 & Reverse..
https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 카카오 코테를 준비하며 접한 문제,, 너무 긴장해서 그런가 문제가 잘 파악이 안되서 정확히 이해하기까지 시간이 많이 소요됐다.. 어떤 알고리즘으로 어떻게 효율적으로 쪼갤지 고민을 참 많이하게 한 문제,, 하지만,, 모든 문제를 시원하게 해결해 준 결정적 힌트는 문제 맨 마지막, 5번 예제 설명에 있었다.. '문자열은 제일 앞부터 정해진 길이만큼 잘라야 합..
https://programmers.co.kr/learn/courses/30/lessons/42839 코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 재귀를 이용한 완전탐색으로 풀 수 있었던 문제. 문제를 보자마자 재귀를 통해 완전탐색을 구현해야 함은 알았으나,, 중복 문자를 제거해가며 모든 조합을 어떻게 효율적으로 만들 수 있을지 생각해보다가 substring을 사용. 소수 검증 로직은 몇몇가지 조건으로 예외 처리 후, 제곱근 값까지만 확인. 앞에 0이 붙은 문자열의 경우 int로 parsin..
https://programmers.co.kr/learn/courses/30/lessons/12913# 코딩테스트 연습 - 땅따먹기 땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟 programmers.co.kr DP(동적 계획법)을 이용하여 풀 수 있었던 문제. 처음엔 정렬 문제일거라 생각했으나,, 각 행의 열이 다른 값들 중, 가장 큰 값을 다음 행에 더해나가며 정답을 구할 수 있었다. 실행 순서는 다음과 같다 : 1. input 첫번째 행부터 마지막 행까지 확인하며, 2. 다음 행의 c열에 현재 c 행이 아닌 3개의 값 중, 가장 큰 값을 더해..
https://programmers.co.kr/learn/courses/30/lessons/64061# 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 인형뽑기에서 뽑은 인형들을 바구니에 담았을 때, 마지막 담았던 인형이 방금 집어 넣은 인형과 같을 경우 터지게 되며, 터진 인형의 개수를 return하는 아주 간단한 문제. LIFO 자료구조, Stack을 이용하면 쉽게 풀 수 있다. 라고 생각하고 Submit 했지만, 몇몇 상황에 대한 예외처리가 필요했다. 실행 순서는 다음과 같다 : 1. 크레인을 내릴 위치가 담긴 moves 배열의 ..
https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+ programmers.co.kr DFS 알고리즘을 사용하여 입력값의 덧,뺄셈에 대한 모든 결과값을 확인할 수 있었음. 재귀 함수를 구현하였으며, 각 연산에 대한 재귀호출 + 예외처리 + 정답에 대한 조건문만으로 쉽게 풀 수 있었던 문제. 실행 순서는 다음과 같다 : 1. 초기값을 넘겨 dfs 재귀함수 호출 2. 다음 index 값 & res..