⛔ 문제사항fakeDataList.forEachIndexed { idx, itm -> if (idx == position) { fakeDataList.removeAt(idx) mainAdapter.notifyItemChanged(idx) }}forEachIndexed를 통해 List 안의 값을 삭제하려고 했는데, 이 코드가 동작하기만 하면 앱이 강제 종료 되며 java.util.ConcurrentModificationException 과 같은 에러가 나타났다.✅ 해결방안원인은 List나 Map과 같은 컬렉션을 수정하는 도중에 다른 스레드에서 동시에 컬렉션을 수정하려고 해서 그러는 것인데, 쉽게 말하자면 List는 수정되었는데 수정되기 이전의 List에서 forEach가 계속 수행 되고 있기 때문이다...
0️⃣ 왜 switch문인데?조건문은 우리가 일반적으로 사용하는 if else 문과 switch문이 있다. 처음 코딩을 배울 때는 그냥 if else문만 쓰면 되는 걸 왜 번거롭게 또 switch문을 배워 사용해야되는지 몰랐다. 대충 이야기를 듣자하니 "switch문이 더 성능이 좋대" 였다. 손에 익어야 쓰지~ 라며 막연하게 if else문 위주로 사용하던 나였는데 어느날 switch문의 간편함을 깨닫고 '그래, 성능도 더 좋은 switch문을 써보자.' 라는 다짐과 함께 switch문을 익혔고 이제는 switch문이 조금 더 편해졌다. 그렇다면 구체적으로 왜 switch문이 더 좋은지 알아보겠다. 1️⃣ if else문부터 보자.fun lunch(점심메뉴) { if(점심메뉴 == "떡볶이"){ ..
0️⃣ 객체지향프로그래밍? 클래스?코틀린은 자바와 같이 객체지향 프로그래밍을 언어인데, 이는 객체를 만들고 사용하며 적극 활용하는 언어임을 알 수 있다. 객체지향 프로그래밍은 OOP(Object Oriented Programming)이라고도 하며 모든 데이터를 Object, 즉 객체를 취급하여 처리하는 것이다. 그리고 이 객체는 속성과 메서드를 포함해야 하는데 이를 도와주는 것 설계도가 바로 클래스다. 클래스는 객체를 정의하는 틀 또는 설계를 의미하는데 좀 더 쉽게 설명하자면 붕어빵을 만들어내는 틀, 붕어빵 기계와 같다고 보면 된다. 고로 객체는 클래스를 인스턴스화한 데이터 덩어리를 의미하게 되고 객체와 클래스 인스턴스는 서로 바꾸어 사용할 수 있다. 객체지향 프로그래밍을 하려면 클래스를 잘 사용해야하며..
❓ 문자열 내 마음대로 정렬하기문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 💡 풀이class Solution { fun solution(strings: Array, n: Int): Array { return strings.sortedWith( compareBy({ it[n] }, { it }) ).toTypedArray() }}strings 배열 안에 담긴 값을 비교하기 위해 다중조건을 통해 비..
⛔ 문제사항강의를 들으며 모든 코드를 따라친다 해도 에러가 발생하기 마련인데, 그래도 놓친 부분이 없이 Run을 누르자마자 이러한 에러가 발생하며 앱이 이유없이 꺼졌다. ✅ 해결방안앱이 꺼진 이유는 바로 TODO 를 삭제하지 않았기 때문이다. 주석으로 되어있는 TODO가 아니라서 그런 것 같다... 앞으로 잘 삭제하고 코드를 실행하자.❗출처참고 사이트 : https://wise-99.tistory.com/43 [코틀린] kotlin.NotImplementedError: An operation is not implemented: Not yet implemented코틀린으로 앱을 만들면서 발생한 오류다. 오류가 발생한 부분은 32번 라인이다. 파이어베이스에 연동해서 데이터를 가져오려고 onDataChang..
❓ 약수의 개수와 덧셈두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. 💡 풀이class Solution { fun solution(left: Int, right: Int): Int { var answer: Int = 0 for (i: Int in left .. right) { var cnt: Int = 0 // 각 수 마다의 약수의 개수의 합 for(j: Int in 1 .. i) if(i % j == 0) cnt++ //약수의 개수 구한..
❓ 나누어 떨어지는 숫자 배열array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 💡 풀이class Solution { fun solution(arr: IntArray, divisor: Int): IntArray { var newArr = arr.filter{it%divisor == 0}.sorted().toIntArray() return if(newArr.size == 0) newArr.plus(-1) else newArr }} arr 안의 값들 중 divisor로 나누어지는 값들만..
❓ 두 정수 사이의 합두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 💡 풀이class Solution { fun solution(a: Int, b: Int): Long { var sum: Long = 0; for(i: Int in Math.min(a, b)..Math.max(a, b)){ sum += i; } return sum; }}sum 값을 저장할 변수를 Long타입으로 선언한다.Math.min(a, b) / Math.max(a, b)로 a와 b 중 최소값..
❓ 자연수 뒤집어 배열로 만들기자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 💡 풀이class Solution { fun solution(n: Long): IntArray { var stringArray = n.toString().reversed().toList(); return stringArray.map{e -> e.toString().toInt()}.toIntArray() }}n은 Long타입이기 때문에 String으로 변환한다.String으로 변환된 n을 뒤집고 음절 단위로 끊어 배열로 변환한다.이 때 toList()로 반환한 배열은 List 타입이다.변환한 배열을 ..
❓ 자릿수 더하기자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 💡 풀이class Solution { fun solution(n: Int): Int { return n.toString().toCharArray().map{ it.toString().toInt() }.sum() }}n은 숫자형이기 때문에 각 자릿수에 접근하여 사용하기 위해 toString을 통해 문자열로 변환한다.변환한 문자열을 음절 단위로 분리하여 배열로 반환하는 toCharArray 메소드를 사용한다.반환된 배열 내부에서 map..
❓ 제목각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요. 💡 풀이class Solution { fun solution(angle: Int): Int { return when (angle) { in 1..89-> 1 //예각 90 -> 2 //직각 in 91..179 -> 3 //둔각 180 -> 4 //평각 else -> 0 } }}예각, 직각,..
❓ 짝수의 합정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요. 💡 풀이class Solution { fun solution(n: Int): Int { var answer: Int = 0 for(i:Int in 1..n){ if(i%2 == 0){ answer += i; } } return answer }}풀이는 비교적 간단하다. n만큼 반복문을 돌린다.반복문 내부에서 조건문을 통해 짝수만을 더해 값을 구하면 된다.1. for in (.. / until)fun example(n: Int){ for(i:Int in..