본문 바로가기

분류 전체보기

(96)
[프로젝트] 정각에 해야지 - 알림 오류 프로젝트 명 : 정각에 해야지 목표 : 스케쥴과 하루 루틴을 입력하고, 루틴에 대해서는 해당 시간에 알림을 보내 규칙적인 생활을 하기 위함 첫번째 문제 테스트용으로 루틴을 1~2분 뒤로 맞춰놓고 테스트하면 정상적으로 실행 그러나 다음날이 되면 알림이 밀려 앱을 실행하면 울리거나 울리지 않는 오류 발생 찾아보니 debug모드가 아닌 release모드로 컴파일하는 것을 추천하여 keystore를 생성하여 release모드로 컴파일 하였다. 테스트 결과 1~2분, 30분까지도 정상적으로 작동하였고, 다음날 9시에 루틴을 설정해놓고 기다렸다. 9시 5분.. 기다려도 알림이 오지 않아 앱을 실행했더니 알림 발생 똑같은 시간 밀림 현상이 발생했다. 안드로이드 공식문서에 따르면 (3번째 문단) https://deve..
[Kotlin] 배열과 리스트 복사 코딩을 하다보면 배열 또는 리스트를 복사해야할 일이 생긴다. 기존의 배열은 그대로 두고 새로운 배열을 만들어 데이터 변경을 해야하기 때문이다. 복사에는 두 가지 복사가 있다. 1. 얕은 복사 2. 깊은 복사 얕은 복사 얕은 복사란 주소값이 복사된 것을 말한다. 쉽게 말하자면 변수명만 다르고 내용물은 같은 경우이다. val list = Array(3, {0}) // [0, 0, 0] val list2 = list 위와 같은 경우 list2의 값을 변경하면 list도 같이 변한다. val list = Array(3, {0}) // [0, 0, 0] val list2 = list list2[0] = 1 println(list[0]) // 1 이는 ArrayList, List 모두 같다. 우리가 알고 싶은건 깊..
[오류] Keystore file not set for signing config release 해당 오류는 keystore 경로 오류이다. 경로가 잘못되었을 때, 경로를 입력안했을 경우 해당 오류가 발생한다. 필자의 경우 release모드로 컴파일하기위해 keystore 생성 후 local.properties에 이와 관련된 정보들을 저장 후 사용하였는데 다음과 같이 입력하여 오류가 났다. local.properties storeFile = "keystore/release.keystore" 다음과 같이 사용할 경우 경로에 큰따옴표까지 포함되기 때문에 오류가 났던 것이다. 따라서 local.properties에서는 아래와 같이 사용해야 한다. storeFile = keystore/release.keystore 경로를 지정해주지 않았을 경우 경로를 지정해주지 않았을 경우에도 다음과 같은 오류가 발생한다..
[안드로이드] release 컴파일 안드로이드 컴파일에는 두 가지 종류가 있다. debug 와 release debug모드는 우리가 개발 시 흔히 사용하는 모드이며 테스트 모드라고 생각하면 편하다. release모드는 테스트가 끝나 배포할 상황에 사용하는 모드이다. 그렇다면 두가지의 차이점은 무엇일까? 차이점 대표적인 차이점으로는 debug모드는 실행파일에 디버깅정보를 포함시키기 때문에 용량이 커진다. 반대로 release모드는 디버깅 정보 없이 컴파일되어 실행파일로 만들어 진다. 또한 메모리 할당, 초기화도 모드 별로 다르다. (debug > release) 따라서 debug모드에서는 오류없이 정상적으로 실행되던 기능이 release모드에서는 오류가 발생하는 경우도 있다. release모드 사용 방법 release모드 사용에는 keyst..
[프로그래머스] 2023 KAKAO BLIND RECRUITMENT 이모티콘 할인행사 with Kotlin 문제 이모티콘 할인율: 10%, 20%, 30%, 40% 유저는 본인이 정한 할인율 이상일 경우에 무조건 이모티콘을 구매한다. 이 때, 구매한 이모티콘 가격이 유저가 정해놓은 가격 이상일 경우 >> 구매했던 이모티콘을 모두 취소하고 카카오 이모티콘 플러스를 구매한다. 이모티콘별로 할인율을 적절히 선택하여 최적의 결과를 도출하여라 결과 -> [이모티콘 플러스 가입 수 , 이모티콘 총 구매 가격] 우선순위는 1번이 이모티콘 플러스 가입 수, 2번이 이모티콘 총 구매 가격 users: [본인이 정한 할인율, 본인이 정한 가격] 입출력 예 users emoticons result [[40, 10000], [25, 10000]] [7000, 9000] [1, 5400] [[40, 2900], [23, 10000]..
[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 후보키 with Kotlin 문제 위와 같이 2차원 배열로 DB가 주어졌을때, 후보키의 개수를 구하는 문제 후보키란? 관계 데이터베이스에서 릴레이션(Relation)의 튜플(Tuple)을 유일하게 식별할 수 있는 속성(Attribute) 또는 속성의 집합 중, 다음 두 성질을 만족하는 것을 후보 키(Candidate Key)라고 한다. 유일성(uniqueness) : 릴레이션에 있는 모든 튜플에 대해 유일하게 식별되어야 한다. 최소성(minimality) : 유일성을 가진 키를 구성하는 속성(Attribute) 중 하나라도 제외하는 경우 유일성이 깨지는 것을 의미한다. 즉, 릴레이션의 모든 튜플을 유일하게 식별하는 데 꼭 필요한 속성들로만 구성되어야 한다. 즉, 각 행이 중복되지 않고 최소한의 속성만 갖고 있을 때 해당 속성들을 후..
[프로그래머스] 멀리 뛰기(Lv 2) with Kotlin 문제 효진이는 멀리 뛰기를 연습하고 있습니다. 효진이는 한번에 1칸, 또는 2칸을 뛸 수 있습니다. 칸이 총 4개 있을 때, 효진이는 (1칸, 1칸, 1칸, 1칸) (1칸, 2칸, 1칸) (1칸, 1칸, 2칸) (2칸, 1칸, 1칸) (2칸, 2칸) 의 5가지 방법으로 맨 끝 칸에 도달할 수 있습니다. 멀리뛰기에 사용될 칸의 수 n이 주어질 때, 효진이가 끝에 도달하는 방법이 몇 가지인지 알아내, 여기에 1234567를 나눈 나머지를 리턴하는 함수, solution을 완성하세요. 예를 들어 4가 입력된다면, 5를 return하면 됩니다. 풀이 과정 1칸 : 1가지 2칸 : 2가지 1 1 2 3칸 : 3가지 1 1 1 1 2 2 1 4칸 : 5가지 위의 예제 5칸 : 8가지 1 1 1 1 1 2 1 1 1..
[프로그래머스] 피보나치 수(Lv 2) with Kotlin 문제 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = 2 + 3 = 5 2 이상의 n이 입력되었을 때, n번째 피보나치 수를 1234567으로 나눈 나머지를 리턴하는 함수, solution을 완성해 주세요. 풀이 과정 피보나치 수는 다이나믹 프로그래밍의 대표적인 문제이므로 DP를 사용하여 해결한다. 코드 class Solution { fun solution(n: Int): Int { val dp = Array(n+1)..
[프로그래머스] JadenCase 문자열 만들기 with Kotlin 문제 주어진 문자열 s를 다음과 같이 변환하여 반환 시작하는 알파벳은 무조건 대문자 나머지는 소문자 입출력 예 s return "3people unFollowed me" "3people Unfollowed Me" "for the last week" "For The Last Week" 풀이 과정 1. s를 모두 소문자로 변환 2. 첫 시작 또는 공백 다음만 대문자로 입력, 나머지는 소문자 코드 class Solution { fun solution(s: String): String { val string = s.toLowerCase() //소문자로 변환 val sb = StringBuilder() for(i in string){ //시작 부분 또는 이전이 공백이라면 대문자 삽입 if(sb.length == ..
[안드로이드] Permission (TedPermission) 권한 요청 Permission이란? 안드로이드 앱을 사용하다보면 오디오, 위치 등 권한을 요청 받아 본 적이 있을 것이다. 바로 그 권한이 permission이다. 어떤 기능을 구현하기 위해 위치, 카메라 오디오 등의 권한이 필요할 때가 있다. TedPermission은 권한 요청을 손쉽게 구현할 수 있도록 기능을 제공하는 오픈소스이다. https://github.com/ParkSangGwon/TedPermission GitHub - ParkSangGwon/TedPermission: Easy check permission library for Android Marshmallow Easy check permission library for Android Marshmallow - ParkSangGwon/TedPermi..