본문 바로가기

전체 글29

[Android] 앱을 지워도 데이터가 남아있는 경우(AndroidManifest allowBackup 속성) 안드로이드 앱을 만드는 도중, 테스트를 위해 기존에 기기에 빌드했던 앱을 지우고, 다시 설치하여 테스트를 하려고 하였다. 앱에서는 첫 시작시 2가지정도의 사용자 데이터를 수집하고, 임의로 생성한 유저키와 데이터를 서버로 전송하여 사용자 정보를 등록한다. 이 과정은 설치 이후 첫 실행시에만 동작하게 하고, 사용자 데이터는 SharedPreference를 사용하여 기기에 저장한다. 이후 실행시에는 이 값이 저장되있는지 유무에 따라서 첫 시작 유무를 판단하게 하였다. 여기서 문제가 생겼는데, 내 테스트 기기인 GalaxyS20에서는 삭제이후 다시 빌드했을때 정상적으로 첫 시작 화면이 나왔지만, 다른 사람의 디바이스에 빌드되어있는 내 앱을 삭제하고 다시 빌드했음에도 첫 시작화면이 나오지 않고, 로그를 찍어봐도 .. 2023. 4. 16.
Java(자바) - 선택정렬, 버블정렬, 삽입정렬, LRU(Least Recently Used) 오늘 학습한 선택정렬, 버블정렬, 삽입정렬, LRU 알고리즘에 대해 정리한다. 1. 선택정렬 주어진 리스트에서 최소값을 찾고, 그 값을 맨 앞의 값과 교체한다. 맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체하는 정렬이다. n개의 리스트가 주어졌을때 시간복잡도는 O(n^2)이다. 전체 배열의 개수가 n일때 인덱스는 n-1까지 존재한다. 0부터 n-2까지 반복하는 i for 문에서 idx를 i 로 두고 j+1부터 n까지 반복하는 j for문을 내부에서 반복하며 array[j] < array[idx] 를 판별하여 idx위치의 값보다 j의 위치의 값이 작으면 idx를 j로 한다.(최솟값 인덱스 탐색) j for문 반복이 끝나면 array[i]의 값과 array[idx] 값의 위치를 교환해준다. 이 과정.. 2023. 1. 7.
[백준] 1157번 단어공부 - Java(자바) 오늘의 백준 문제 1157번 단어공부 본래 하루 한문제씩 풀고자 마음먹었지만, 오늘 풀었던 파트 문제가 간단한 것들이 많아 총 5문제를 풀었고, 그중 1157번에서 살짝 헤매었기에 해당 문제를 포스팅한다. 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 풀이 우선 문제에서 대소문자를 구분하지 않는다고 했으니, 전부 대문자로 바꾸고 시작한다... 2023. 1. 6.
[백준] 1065번 한수 - Java(자바) 오늘의 백준 문제 1065번 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 같은 한수의 개수를 출력하는 프로그램을 작성하시오. 첫째 줄에 1,000보다 작거나 같은 자연수 N이 주어진다. 풀이 문제를 보았을때 내가 제일 중요하게 생각하는건 당연한 말일수도 있지만 어떤 프로그램을 작성해야하는지 보는것이라고 생각한다. 어떤 양의정수 X 의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다고 했다. 난 이해력이 부족해서 항상 이런 문제를 보면 예시를 들어야 이해가 되는데, 처음에 이해하기 위해 1부터 10까지 숫자 중 한수를 생각해보았다. "각 자리가.. 2023. 1. 4.
[백준] 4673번 셀프넘버 - Java(자바) 4673번(solved.ac 난이도 실버5) 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, .. 2023. 1. 4.