목록코틀린 (57)
안드로이드 개발자의 창고
10986번: 나머지 합 수 N개 A1, A2, ..., AN이 주어진다. 이때, 연속된 부분 구간의 합이 M으로 나누어 떨어지는 구간의 개수를 구하는 프로그램을 작성하시오. 즉, Ai + ... + Aj (i ≤ j) 의 합이 M으로 나누어 떨어지는 (i, j) www.acmicpc.net ❓ 문제 풀이 누적 합을 이용한 문제이다. 처음에 생각했던 건 구간 합을 이용하는 것이었다. 실제로 문제에도 구간의 합이라 써있어서... 구간 합을 구하여 M으로 나눈 나머지가 0이면 되는 것이다. sum이라는 Array에 N개의 수 구간 합을 만들면 i ~ j 까지의 구간 합은 sum[j] - sum[i-1]이다. 따라서 (sum[j] - sum[i-1]) % M이 0인 경우를 찾으면 된다. 위의 식은 sum[j]..
11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net ❓ 문제 풀이 처음 for문을 이용해서 계산했을 때는 시간 초과가 발생했다. 매번 구간 합을 구하는 것 보다 구간 합을 구해놓고 출력하는 방법이 더 빠르다. i부터 j까지의 구간 합 = j번째 숫자까지의 구간 합 - (i - 1)번째 숫자까지의 구간 합 예 ) 5, 4, 3, 2, 1 1 ~ 3까지의 구간 합은 3번째 숫자까지의 구간 합 = 5 + 4 + 3 = 12 0번째(1 - 1) 숫자까지의 구간 합 = 0 12 - 0 = 12 2 ~..

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 View Binding layout 폴더에 있는 xml 파일을 관리하는 클래스를 자동 생성하여 이를 통해 View를 관리할 수 있는 개념 layout 폴더에 있는 xml 파일 당 하나의 클래스가 생성되며 이 클래스에는 xml 파일에 배치한 View들을 관리할 수 있는 기능이 구현되어 있다. 안드로이드 OS가 알아서 View를 추출하여 변수에 담아준다. 이를 통해 개발자가 View를 직접 추출하지 않고 사용할 수 있다. ✔️ 사전 작업 View Binding을 사용하기 위해서는 app 수준의 gradle 파일에 다음과 같이 추가해준다. gradle(Moudule) - android { ... } 내부에 해당 코드 삽입 viewBinding { ..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❓ 문제 풀이 고득점 kit 스택/큐에 포함되어있는 문제로 Queue를 사용하여 풀었다. progress와 speeds 배열을 Queue로 변환한다. 작업을 하나씩 제거하며 배포되는 작업 수를 카운트할 변수(cnt)를 선언한다. 작업이 완료되는 날짜를 카운트할 변수(time)를 선언한다. 작업 진도 + (작업 속도 * 날짜)를 계산한다. 계산한 결과가 100이 넘으면 Queue에 저장되어있는 작업과 속도를 제거한다. 한 번에 배포되는 작업을 카운트한다. 100이 넘지 않으면 answer에 cnt를 담는다. c..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr ❓ 문제 풀이 해시를 연습하는 고득점 kit 문제로 해시를 사용하여 풀 방법을 생각했다. 해시 맵을 사용하여 의상의 종류 갯수를 구한다. 해시 맵의 key는 의상의 종류 이름(String)으로 하고, value를 1(Int)로 한다. 같은 의상 종류가 있다면 value를 증가(++) 시킨다. 서로 다른 옷의 조합 수를 구한다. 입출력 예시를 보면 (의상의 종류 + 1) 한 값에서 1을 빼준 값이 정답이 된다. 의상의 종류에 +1을 하는 이유는 해당 의상을 안입었을 경우도 포함시키기 위해서이다. 최종 값에서 -..

UninitializedPropertyAccessException: lateinit property binding has not been initialized lateinit을 사용했지만 초기화하지 않아 발생하는 오류이다. 내 코드 class AllFragment : Fragment() { lateinit var binding: FragmentAllBinding override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { // 사용할 레이아웃, 인수(부모), 프레그먼트 자동으로 추가할 것 인지 var binding = FragmentAllBinding.inflat..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 FileOutputStream 프로그램에서 파일로 데이터를 전송할 때 사용하는 스트림이다. 데이터를 보내고자 하는 파일이 없으면 자동으로 생성된다. ✔️ 주요 메서드 생성자(파일이름) : 파일 이름의 파일을 열고 출력 스트림을 추출한다. 이 때 데이터를 덮어 씌워진다. 생성자(파일이름, boolean) : 파일이름의 파일을 열고 출력 스트림을 추출한다. 이 때 boolean 값을 true로 주면 쓰고자하는 내용이 뒤에 추가가 된다. write : 바이트 형태의 데이터를 파일로 쓴다. close : 스트림을 닫는다. flush : 메모리에 남겨진 데이터를 모두 송출한다. 📖 FileInputStream 파일의 데이터를 수신할 때 사용하는 스트림..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 스레드(Thread) 스레드(Thread)란? 쓰레드는 동시에 여러 개의 작업을 하고 싶을 때 사용하는 개념 스레드(Thread) 사용방법 Thread 클래스 상속 : start 메서드를 상속 받았기 때문에 객체 생성하고 start를 호출한다. Runnable 인터페이스 구현 : start 메서드가 없기 때문에 Thread 클래스의 객체를 생성하여 이를 통해 가동한다. Thread 고차 함수 사용 run 메서드에 들어갈 코드(스레드로 처리될 코드)를 익명함수나 람다식으로 작성해서 넣으면 해당 코드를 스레드로 운영해준다. start도 자동으로 호출하기 때문에 개발자가 명시적으로 호출하지 않아도 된다. 📖 예제 코드 ✔️ Thread 클래스 상속..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 예외처리 예외 프로그램 실행 중 예측이 가능한 오류들을 예외라고 부른다. 예외가 발생하면 코드의 수행이 중단된다. 예외 처리는 예외가 발생했을 때 프로그램이 수행되는 것을 막고 예외 발생 시 동작해야 하는 코드를 수행시켜 프로그램이 문제없이 동작하게 하기 위한 목적을 가지고 있다. 예외 처리 기본 코드 try{ 예외가 발생할 가능성이 있는 코드 }catch (e:예외클래스) { 예외가 발생했을 때 수행할 코드 }finally { 예외 발생 여부에 관계없이 수행해야 하는 코드 } 📖 예제 코드 fun main() { try { val a1 = 10 / 0 // val str:String? = null // println(str!!.length)..
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT 📖 Map 객체를 이름을 통해 관리하는 컬렉션 map은 순서 개념이 없다. 메모리에 저장할 때 순차적으로 저장되어 출력해보면 그대로 출력되지만 사용할 때 인덱스의 개념이 없기 때문에 순서의 개념이 없다고 정의한다. 📖 예제 코드 1. Map 생성 fun main(){ val map1 = mapOf("key1" to 10, "key2" to 20, "key3" to 30) println("map1 : $map1") // {key1=10, key2=20, key3=30} val map2 = mapOf(10 to "str1", 20 to "str2", 30 to "str3") println("map2 : $map2") // {10=str1, 20=st..