분류 전체보기 (93) 썸네일형 리스트형 알고리즘 27 ~ 28 , map 핸드폰 번호 가리기문제 설명프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.제한 조건phone_number는 길이 4 이상, 20이하인 문자열입니다.class Solution { fun solution(phone_number: String): String { var answer = "" phone_number.toList().mapIndexed { index, i-> if(index asList() : 동일한 인스턴스를.. 사용자 위치 위치 접근 권한사용자의 위치를 추적하기 위한 3가지 권한android.permission.ACCESS_COARSE_LOCATION: 와이파이나 모바일 데이터(또는 둘 다)를 사용해 기기의 위치에 접근하는 권한입니다. 도시에서 1블록 정도의 오차 수준입니다.android.permission.ACCESS_FINE_LOCATION: 위성, 와이파이, 모바일 데이터 등 이용할 수 있는 위치 제공자를 사용해 최대한 정확한 위치에 접근하는 권한입니다.android.permission.ACCESS_BACKGROUND_LOCATION: 안드로이드 10(API 레벨 29) 이상에서 백그라운드 상태에서 위치에 접근하는 권한입니다.안드로이드 권한 설정 및 획득 방법권한 설정앱이 위치 정보에 접근하려면, 먼저 AndroidM.. Room RoomSqLite를 쉽게 사용할 수 있는 데이터베이스 객체 매칭 라이브러리 입니다쉽게 Query를 사용할 수 있는 API 제공합니다Query를 컴파일 시간에 검증합니다Query 결과를 LiveData로하여 데이터베이스가 변경될 때 마다 쉽게 UI 변경할 수 있습니다SQLite 보다 Room 사용할 것을 권장합니다 Room의 주요 3요소@Database: 클래스를 데이터베이스로 지정하는 annotation, RoomDatabase를 상속 받은 클래스 여야 합니다 (Room.daravaseBuilder를 이용하여 인스턴스 생성)@Entity : 클래스를 테이블 스카마로 지정하는 annotaion@Dao : 클래스를 DAO(Data Access Object)로 지정하는 annotation (기본적인 inse.. 알고리즘 25 ~ 26 나누어 떨어지는 배열 문제 설명array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.제한사항arr은 자연수를 담은 배열입니다.정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.divisor는 자연수입니다.array는 길이 1 이상인 배열입니다.class Solution { fun solution(arr: IntArray, divisor: Int): IntArray { var answer = intArrayOf() arr.forEach { if(it %.. forEach, forEachindexed forEach 순서가 있는 배열의 확장 함수 for문을 사용하던 외부 함수에서 내부함수로 바꿔 줄수 있게 만든 확장함수로 collections의 element들에 대해서 특정한 작업을 수행할 수 있도록 해준다 외부 반복val exampleList = mutableListOf(1, 2, 3)for (number in exampleList) { print(number)} 내부 반복val exampleList = mutableListOf(1, 2, 3)exampleList.forEach { print(it) } forEachindexed : forEach와 동일한 기능을 수행하며 value뿐만 아니라 index까지 같이 사용할 수 있다.var list = array("A","B","C")list.for.. viewbinding , by lazy viewbinding val:불변변수 var:가변 변수 lateinit var : 초기화 후 값이 바뀔수 있을 때 by lazy : 초기화 후 전용 값으로 사용 findviewbyidlateinit 하면 사용하기 전에 초기화 해주거나, onCreate에서 모두 초기화해주어야 하는데, 등록할 변수가 많아지면 코드 라인을 많이 잡아먹고 누락 등의 문제도 있어서 by lazy로 코드 파편화도 막고 코드 라인도 줄이다 binding.root로 바탕이 되는 constraintLayout 등을 View 매개변수의 인자로 전달해야 한다.그래서 초기화 위치가 onCreate으로 고정되어, binding에 ActivityOooBinding.inflate(layoutInflater)을 넣고 setContentView(binding.root.. SharedPreferenses Preference프로그램의 설정 정보를 영구적으로 저장하는 용도로 사용XML 포맷의 텍스트 파일에 키-값 세트로 정보를 저장SharedPreferences classpreference의 데이터(키-값 세트)를 관리하는 클래스응용 프로그램 내의 액티비티 간에 공유하며, 한쪽 액티비티에서 수정 시 다른 액티비티에서도 수정된 값을 읽을 수 있다응용 프로그램의 고유한 정보이므로 외부에서는 읽을 수 없다공유 환경설정의 핸들 가져오기getSharedPreferences (name,mode)여러개의 Shared Preference파일들을 사용하는 경우name: Preference 데이터를 저장할 xml파일의 이름mode : 파일의 공유 모드MODE_PRIVATE : 생성된 xml파일은 호출한 애플리케이션 내에서만 .. 알고리즘 23 ~ 24 콜라스 추측 문제 설명1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. class Solution { fun solution(num: Int): Int { var answer = 0 var n = num.toLong() while (n > 1L) { if (n % 2 == 0L) { n /= 2 .. 이전 1 2 3 4 5 6 7 8 ··· 12 다음