// 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..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlHzHr%2FbtsFp8KlH2q%2FrJ4EBHlR6bA7UjNVgxQX81%2Fimg.png)
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 in Action 정주행을 시작했다. 앞으로는 아래의 내용들에 대해 정리해서 기록할 계획이다. - 새롭게 알게된 사실이나 키워드 - 텍스트로는 이해가 잘 안되는 부분 -> 직접 구현 또는 추가 학습 - 기본적인 개념 및 중요한 내용 - 다시 한 번 리마인드할 내용 - 학습하며 생긴 의문점 해결하기 - 전부터 고민하던 부분에 대한 해답을 얻은 경우! - 개인적으로 신기했던 내용 - ex) Kotlin에 이런 기능도 있구나! 1. 코틀린이란 무엇이며, 왜 필요한가? - 자바 메서드를 리팩토링하면 그 메서드와 관련 있는 코틀린 코드까지 변경된다. 역의 상황도 같다. 2. 코틀린 기초 2-1. 문(statement)과 식(expression)의 구분 - 식 ..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcZN0Jz%2FbtsE9QDnfRH%2FP54KQsOr1yucRfgUvHkIk0%2Fimg.png)
위와 같이 컴포넌트의 레이아웃이 똑같은 화면들을 구현해야할 때, 사용하면 유용한 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을 둘것인지 아래에 둘것인..
![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiA9VX%2FbtsE7ntU58Z%2F5vzmS0yZmYdoloRMKpCwkk%2Fimg.png)
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에서 컬..