본문 바로가기

분류 전체보기144

[Android] 키보드 Done 으로 변경하기 (개행 막기) 2022. 10. 6.
[Android] 반복알림(notification) 구현 반복 알람 구현 1. AlarmManager 사용 (❌) 처음에 이것저것 구현해봤는데 잘 안되었었음. 안울리거나.. 늦게 울리거나... 반복이 안된다거나... (밑에 서술하겠지만, 결국 Alarm Manager로 돌아왔다.) ? 2. WorkManager 사용 (❌) 첨에 잘안되어서 알아보니, 테스트로 1분간격으로 해서 안된거였다. 최소 15분이라고 한다. 암튼 15분으로 맞춰서 테스트 해보니 아~~주 정확하진 않지만 오차 범위 1분내외로 잘 울린다. 리마인더 설정하는 부분 1 2 3 4 5 6 7 8 9 val workRequest = PeriodicWorkRequestBuilder(15,TimeUnit.MINUTES) .setInitialDelay( morningReminderTimeCal.timeI.. 2022. 6. 13.
[Android] SharedPreferences generic (kotlin) Reference https://blog.naver.com/PostView.naver?blogId=tkddlf4209&logNo=222181366697&categoryNo=0&parentCategoryNo=0&viewDate=&currentPage=1&postListTopCurrentPage=1&from=postView [Android] SharedPreference with Generic SharedPreferece 사용 시 매번 sharedPreference 값을 set하거나 get 할 때 메서드를 매번 새로 만들다 ... blog.naver.com 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647.. 2022. 3. 3.
[Android] 'FragmentManager is already executing transactions' error when changing fragment of bottomnavigationview programmatically (AAC Navigation) bottomnavigationview의 fragment 를 강제로 바꿔주는 코드를 구현 중이었음. val bottomNav = activity?.findViewById(R.id.bottom_nav) bottomNav?.selectedItemId = R.id.dreamlist 근데 터짐. 어떻게 해결할 것인가. 먼저, navigation 이동 시에 fragment 재생성을 방지하도록 아래 코드(KeepStateNavigator) 를 사용하고 있었다. https://github.com/STAR-ZERO/navigation-keep-fragment-sample/blob/master/app/src/main/java/com/star_zero/navigation_keep_fragment_sample/navigati.. 2022. 3. 3.
[프로그래머스] [kotlin] 위장 //fun main() { // println( // solution( // arrayOf( // arrayOf("yellowhat", "face"), // arrayOf("bluesunglasses", "face"), // arrayOf("green_turban", "face") // ) // ) // ) //} fun solution(clothes: Array): Int { var answer = 1 val mmap = mutableMapOf() clothes.forEach { mmap[it[1]] = mmap.getOrDefault(it[1], 0) + 1 } mmap.keys.forEach { answer *= (mmap[it]!! + 1) } return answer - 1 } fun solut.. 2022. 2. 24.
[프로그래머스] [kotlin] 괄호 회전하기 import java.util.* // //fun main() { // print(solution("([{)}]")) //} var deque: MutableList = mutableListOf() fun solution(s: String): Int { var answer: Int = 0 if (s.length == 1) return 0 for (i in s.indices) { deque.add(s[i]) } for (i in s.indices) { rotate() if (isRight()) answer++ } return answer } fun rotate() { deque.add(deque.first()) deque.removeAt(0) } fun isRight(): Boolean { val stac.. 2022. 2. 24.
[백준][kotlin] 11655번 ROT13 문제 ROT13은 카이사르 암호의 일종으로 영어 알파벳을 13글자씩 밀어서 만든다. 예를 들어, "Baekjoon Online Judge"를 ROT13으로 암호화하면 "Onrxwbba Bayvar Whqtr"가 된다. ROT13으로 암호화한 내용을 원래 내용으로 바꾸려면 암호화한 문자열을 다시 ROT13하면 된다. 앞에서 암호화한 문자열 "Onrxwbba Bayvar Whqtr"에 다시 ROT13을 적용하면 "Baekjoon Online Judge"가 된다. ROT13은 알파벳 대문자와 소문자에만 적용할 수 있다. 알파벳이 아닌 글자는 원래 글자 그대로 남아 있어야 한다. 예를 들어, "One is 1"을 ROT13으로 암호화하면 "Bar vf 1"이 된다. 문자열이 주어졌을 때, "ROT13"으로 암호.. 2022. 2. 21.
비동기 작업 관리 회고, Type 과 State https://velog.io/@nathankim0/%EB%B9%84%EB%8F%99%EA%B8%B0-%EC%9E%91%EC%97%85-%EA%B4%80%EB%A6%AC-%ED%9A%8C%EA%B3%A0-Type-%EA%B3%BC-State 2022. 2. 18.
[Android] How to dynamically change height of RecyclerView inside NestedScrollview when items are added or deleted NestedScrollview 안에 있는 RecyclerView의 높이를 아이템이 추가되거나 삭제될 때 동적으로 변경하는 방법 => item을 add 했을 때 size 변경이 안되는 모습 => item을 add 했을 때 size 변경이 잘 되는 모습. 어떻게? : size 변경할 시점에 view의 requestLayout() 을 호출한다. invlidate 는 size와 관련된 onMeasure을 호출하지 않기 때문에 높이가 변경되지 않는다. (onDraw 호출) requestLayout은 onMeasure 호출하기 때문에 size 변경 해줌. 아래 그림을 참고하자. 2022. 2. 16.
[백준][kotlin] 4949번 균형잡힌 세상 시간 제한메모리 제한제출정답맞힌 사람정답 비율 1 초 128 MB 51598 17026 13477 32.471% 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다. 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. 모든 괄호들의 짝은 1:1 매칭만 .. 2022. 2. 15.