전체 글

// Time: 24.29 ms, Memory: 64 MB fun solution(food: IntArray): String { var answer = StringBuilder() var round = 1 // 첫 번째 인덱스를 제외하고 roof 돌리기 food.sliceArray(IntRange(1, food.size - 1)).map { val canFoodCountByRound = it / 2 answer.append((round.toString()).repeat(canFoodCountByRound)) round += 1 if (round == food.size) { val answerBackup = answer.reversed() answer.append(0) answer.append(answer..
내가 코딩한 아래 s1 메서드의 성능이 안 좋은 이유에 대해서 배운점을 리뷰해보려 한다. // s의 길이가 10000일 때, 100.0ms / 197MB fun solution1(s: String): IntArray { var answer: IntArray = intArrayOf() var nearIndex = mutableMapOf() for ((index, ch) in s.withIndex()) { val isContainsKey = nearIndex.containsKey(ch) answer += if(isContainsKey) index - nearIndex[ch]!! else -1 nearIndex[ch] = index } return answer } // s의 길이가 10000일 때, 0.74m..
· Kotlin
3. 함수 정의와 호출 _ 컬렉션 / 문자열 / 정규식을 다루기 위한 함수 _ 이름 붙인 인자 / 디폴트 파라미터 값 / 중위 호출 문법 사용 _ 확장 함수와 확장 프로퍼티를 사용해 자바 라이브러리 적용 _ 최상위 및 로컬 함수와 프로퍼티를 사용해 코드 구조화 3-1. 기본중의 기본 - 자료형 확인 - 변수.javaClass로 변수의 자료형 확인이 가능하며, 이는 java의 getClass() 커스텀 getter와 매칭되어 있다. 3-2. joinToString 함수 구현부 분석 // Kotlin 1.6 버전 기준 code fun joinToString( collection: Collection, // 요소 separator: String, // 구분자 prefix: String, // 접미 postfi..
· Kotlin
Kotlin을 코틀린스럽게 사용하기 위해 Kotlin in Action 정주행을 시작했다. 앞으로는 아래의 내용들에 대해 정리해서 기록할 계획이다. - 새롭게 알게된 사실이나 키워드 - 텍스트로는 이해가 잘 안되는 부분 -> 직접 구현 또는 추가 학습 - 기본적인 개념 및 중요한 내용 - 다시 한 번 리마인드할 내용 - 학습하며 생긴 의문점 해결하기 - 전부터 고민하던 부분에 대한 해답을 얻은 경우! - 개인적으로 신기했던 내용 - ex) Kotlin에 이런 기능도 있구나! 1. 코틀린이란 무엇이며, 왜 필요한가? - 자바 메서드를 리팩토링하면 그 메서드와 관련 있는 코틀린 코드까지 변경된다. 역의 상황도 같다. 2. 코틀린 기초 2-1. 문(statement)과 식(expression)의 구분 - 식 ..
· Android
위와 같이 컴포넌트의 레이아웃이 똑같은 화면들을 구현해야할 때, 사용하면 유용한 ViewPager를 적용하는 방법에 대해 리뷰 해보려한다. 1. xml에서 ViewPager2를 원하는 영역만큼 정의한다. 현재 전체 레이아웃을 사용하므로 가로, 세로 모두 match_parent로 지정 이때, viewPager와 함께 TabLayout 등을 같이 정의해주면 페이지 간의 탐색과 진행도를 알 수 있는 UI도 제공할 수 있다. 탭에 텍스트를 빼서 진행도나 애니메이션으로 써도 괜찮을 듯 ref. https://developer.android.com/guide/navigation/navigation-swipe-view-2?hl=ko#add_tabs_using_a_tablayou 상단에 Tab을 둘것인지 아래에 둘것인..
· Kotlin
numberList = 사용자가 추가한 번호들 100: numberList + 아래 값들 101: filter()를 통해 1부터 45값 중에 numberList와 중복되지 않는 값들만 반환한다. 102: shuffled()를 통해 45 - numberList.size 개수 만큼의 값을 무작위로 섞는다. 103: take()를 사용해서 셔플된 List를 원하는 길이만큼 앞에서 잘라 가져온다. - subList()와 같은 역할 104: 합해진 리스트를 오름차순으로 정렬 주요 함수 설명 101. filter filter : Iterable 객체에서 접근할 수 있는 함수로 매개값으로 전달받은 조건에 따라, Boolean값이 true인 값들만 List 형태로 반환하는 함수. *Iterable은 Kotlin에서 컬..
· Android
1. Shift + F6 : 이름(변수명, 함수명) 한 번에 수정 2. Ctrl, Shift + F or Shift 2번 : 모든 프로젝트 파일에서 찾기 3. Ctrl, Alt + l : 자동 정렬 4. Ctrl, Alt + o : import 정리 5. CS + BackSpace : 최근 수정 위치 6. Ctrl + F12 : 파일 구조 확인 7. C + E : 최근 작업 파일 목록(CA L or R도 가능) Tip. Git에 업로드 안된 내용이라도 Local History를 통해서 `파일 단위`로 코드 복구가 가능하다.
탱구리몬
살아남기