본문 바로가기

Kotlin82

[Kotlin, S4] 백준 2358번 평행선 평행선(2358번)Silver 4#자료 구조 #정렬 #해시를 사용한 집합과 맵https://www.acmicpc.net/problem/2358 문제 내용  문제 접근2개 이상의 점을 지나는 선분에서 x축 또는 y축에 평행한 선분의 개수를 세는 문제.선분의 구성이 2개 이상의 점을 지날 수도 있고, 한 좌표에 점이 여러 개가 있을 수도 있다.// 선분의 구성에 2개 이상의 점이 쓰이는 경우41 02 03 04 0정답: 1// 한 좌표에 여러 점이 있는 경우21 11 1정답: 2첫 번째 case가 이해하기 어려웠다.문제를 처음 읽었을 때는 2개 이상의 점을 지나는 선분이라는 것을 못 보고 2개의 점을 지나는 선분이라고 생각해서 왜 1개가 나오는지 헷갈렸다.case 1의 경우에는 점 4개를 연결한 y축과 평행.. 2024. 9. 26.
[Android] ConstraintLayout GuildLine으로 화면 구성하기 부트캠프 최종 팀 프로젝트 기록 12  서론지난 포스팅의 splash screen 구현 이후, 다양한 오류들을 해결하고 있는 중이다.지금까지 로그인에서 로그인 진행 후 main으로 이동하지 않은 오류를 해결하면서 로그인 진행 중 circular progress bar를 띄우는 디테일 작업을 진행하였고,Android 12 이하의 버전에서는 splash screen dependency가 잘 작동하지 않는 문제가 있어서 Activity로 splash screen을 구성하고, 로그인 기능을 약간 손보는 작업을 진행했다.위 2가지의 작업은 포스팅으로 쓰기에는 애매한 감이 있었는데, 이번에 한 것은 포스팅으로 쓰기 좋은 것 같아서 이번에 작성해보려 한다. 이번에는 settings 화면을 구현하였다.myPage에 들.. 2024. 9. 23.
[Kotlin, S5] 백준 32344번 유물 발굴 유물 발굴(32344번)Silver 5#구현 #기하학https://www.acmicpc.net/problem/32344 문제 내용  문제 접근운동장에 a번 유물이 w, h 위치에 묻혀 있다.a번 유물 조각들의 위치 정보를 이용해 a번 유물의 예상 크기를 직사각형으로 정의한다.직사각형의 넓이가 가장 큰 유물의 번호와 그 넓이를 출력한다.만약 넓이가 동일하다면 유물 번호가 더 작은 게 더 우선이다. 유물의 예상 크기 직사각형을 구하는 방법은 아래와 같다.예를 들어 4개의 위치에 유물이 있을 때점 a, b, c, d가 유물의 위치라고 하면 유물의 예상 크기는 사각형 efgh와 같다.위 사진으로 가장 큰 x축(d)과 가장 작은 x축(a), 그리고 가장 큰 y축(c)과 가장 작은 y축(b)의 값을 이용해 위 도형.. 2024. 9. 23.
[Kotlin, B1] 백준 32343번 드랍 더 비트 드랍 더 비트(32343번)Bronze 1#그리디 알고리즘 #브루트포스 알고리즘 #비트마스킹2024 HICON 홍익대학교 프로그래밍 경진대회 B번https://www.acmicpc.net/problem/32343 문제 내용  문제 접근n자리의 2진수에서 각각 1의 개수가 a, b개인 2진수 2개가 주어질 때, 두 2진수의 xor 연산 결과가 제일 큰 경우를 구해야 한다.n자리의 2진수에서 나올 수 있는 수는 2의 n승에 - 1만큼 나온다.예를 들어 3자리의 2진수에서 나올 수 있는 최댓값은 2의 3승에 -1이므로 7이다. 1부터 7까지 나올 수 있다는 뜻이다. 그래서 1부터 n자리의 2진수에서 나올 수 있는 최댓값만큼 반복해서 반복되는 수를 2진수로 변환 후, 1의 개수를 확인해서 1의 개수가 a, b개.. 2024. 9. 23.
[Kotlin, S4] 백준 9242번 폭탄 해체 폭탄 해체(9242번)Silver 4#구현 #문자열 #파싱https://www.acmicpc.net/problem/9242 문제 내용  문제 접근별 기호(*)와 공백으로 이루어진 숫자가 입력된다.숫자는 7 segment 숫자 표기법으로 이루어져 있다.그냥 숫자를 파싱 해서 6으로 나누어 떨어지면 beer를 출력하고 그렇지 않으면 boom을 출력하면 되는 간단한 문제이다. 또한 암호가 무조건 7 segment의 숫자들만 나오는 것도 아니다.암호는 3 * 5의 형태로 1칸씩 공백을 띄고 주어지게 되는데, 3 * 5의 암호 형식을 지키지 않은 코드가 올 수 도 있다.그래서 위 2가지 상황에 맞는 처리(boom)를 해주어야 한다. 문제 해결 코드더보기import java.io.BufferedReaderimpor.. 2024. 9. 20.
[Kotlin, B1] 백준 21771번 가희야 거기서 자는 거 아니야 가희야 거기서 자는 거 아니야(21771번)Bronze 1#구현 #문자열https://www.acmicpc.net/problem/21771 문제 내용  문제 접근가희(G)와 베개(P)가 입력될 때, 가희가 베개 위에 있으면 1, 아니면 0을 출력베개 위에 있는 조건이 G가 P에 걸쳐 있어도 베개 위에 있다고 친다. 1이 출력되려면 P의 영역 안에 G가 있어야 한다.그것을 확인하기 위해서는 P의 개수를 세면 쉽게 알아낼 수 있다.P의 개수가 P 영역의 넓이보다 작으면 G가 P 영역 안에 있다는 것을 뜻한다.입력 예제 1을 예로 들어 보자.11 115 4 6 10....GGGG.......GGGG.......GGGG....PPPGGGGPPP.PPPGGGGPPP.PPPPPPPPPP.PPPPPPPPPP.PPPP.. 2024. 9. 19.
[Kotlin, G5] 백준 10827번 a^b a^b(10827번)Gold 5#임의 정밀도 / 큰 수 연산https://www.acmicpc.net/problem/10827 문제 내용  문제 접근a에 소수가 들어오고, b에 지수가 들어올 때, a의 b제곱을 구하기.소수(a)의 b제곱이라, 소수를 정확히 계산할 BigDecimal을 사용한다.  문제 해결 코드더보기import java.io.BufferedReaderimport java.io.InputStreamReaderimport java.math.BigDecimalfun main() = with(BufferedReader(InputStreamReader(System.`in`))) { val input = readLine().split(" ") val a = BigDecimal(input.. 2024. 9. 19.
[Android] SplashScreen Api를 이용해 로그인 여부 확인 부트캠프 최종 팀 프로젝트 기록 11  서론오늘의 구현 기능은 자동 로그인 기능이다.Firebase Authentication을 사용 중이기 때문에 현재 FirebaseAuth의 currentUser.uid가 null이 아니면 사용자가 로그인되어 있다는 뜻이기 때문에 이 경우에는 MainActivity로 이동하고, 아닐 때는 로그인이 필요하기 때문에 SignInActivity로 이동하게 하는 기능이다.이 기능은 현재 구현이 되어 있지만, SignInActivity의 onStart lifeCycle 함수에 구현되어 있기 때문에 사용자가 이미 로그인을 했어도 SignInActivity를 보고 MainActivity로 넘어가게 되는 아주 사소한 이슈가 있다.이 이슈를 해결하기 위해 Android 12부터 사용.. 2024. 9. 17.
[Android] Kakao Login을 Firebase Authentication과 연결 부트캠프 최종 팀 프로젝트 기록 9  서론지난 포스팅과 연결된다.https://rkdrkd-history.tistory.com/244 [Node.js] Intellij, Vscode에서 Firebase Functions 개발을 위한 Node.js 프로젝트 세팅부트캠프 최종 프로젝트 기록 7  서론현재 kakao 로그인 기능을 구현하려 하고 있다.kakao login을 그냥 구현하는 게 아닌 firebase authentication과 연동해서 사용하려 한다.그러기 위해서는 firebase functiorkdrkd-history.tistory.com 지난 포스팅에는 firebase functions 개발을 위한 node js 환경 세팅까지 진행했다.오늘은 android에서 구현한 firebase funct.. 2024. 9. 12.
[Kotlin, S2] 백준 18352번 특정 거리의 도시 찾기 특정 거리의 도시 찾기(18352번)Silver 2#그래프 이론 #그래프 탐색 #너비 우선 탐색 #최단 경로 #데이크스트라https://www.acmicpc.net/problem/18352 문제 내용  문제 접근도시의 개수, 도로의 개수, 구해야 하는 최단 거리와 시작 지점이 주어질 때, 시작 지점 도시에서 다른 도시로 이동하는 최단 거리가 입력받은 최단 거리와 같은 도시 번호만 출력한다. 조건에 맞는 도시가 없으면 -1을 출력. 도시는 모두 1~N까지가 있다. 도로의 길이는 모두 1일 때, 최단 경로 입력값을 K라고 할 때, 출발 도시에서 각 도시로 이동하는 최단 경로가 K와 같은 도시만 출력한다.bfs를 사용하면 된다. bfs를 쓰기 위해서는 어쨌든 그래프가 있어야 한다.4 4 2 11 21 32 3.. 2024. 9. 10.
[Kotlin, G1] 백준 1300번 K번째 수 K번째 수(1300번)Gold 1#이분 탐색 #매개 변수 탐색https://www.acmicpc.net/problem/1300 문제 내용  문제 접근문제 자체는 이해하는 데 어렵지 않다.배열의 index는 1부터 시작한다. 각 배열에 들어 있는 수들은 각 index의 곱이다.그러므로 표로 나타내 보면 아래와 같다.위 표에는 5 * 5 크기의 2차원 배열에 들어갈 수들을 나열해 놨다.각 index의 곱으로 이루어져 있다.모든 값들은 각 줄에 해당하는 배수들로 이루어져 있는 것을 볼 수 있다.1번째 줄은 1의 배수, 2번째 줄은 2의 배수 ... 5번째 줄은 5의 배수로 이루어져 있다. 입력 예제에서는 3 * 3의 2차원 배열의 값들을 정렬했을 때, 7번째 값을 불러와야 한다.우선 배열 데이터를 정렬해 보면.. 2024. 9. 9.
[Kotlin, S5] 백준 2828번 사과 담기 게임 사과 담기 게임(2828번)Silver 5#구현 #그리디 알고리즘https://www.acmicpc.net/problem/2828 문제 내용  문제 접근사과를 담을 수 있는 바구니가 주어진다.바구니의 범위 안에 정확히 사과를 넣어야 할 때, 바구니를 움직이는 최소 횟수를 구해야 한다.바구니의 넓이가 1보다 클 수도 있다. 사과가 떨어지는 순서는 입력 순서대로 떨어진다.떨어지는 위치에 바구니를 옮겨 주면 된다. 입력 예제 1을 예로 들어 보겠다.5 131535칸으로 나뉘어 있는  화면에 길이가 1인 바구니가 있을 때, 사과가 1 -> 5 -> 3의 위치에서 떨어질 때, 오른쪽 또는 왼쪽으로 바구니를 움직여 사과를 모두 담을 수 있는 최솟값을 구해야 한다. 스크린에 따라서 가장 왼쪽을 1, 가장 오른쪽을 5.. 2024. 9. 6.
[Android] runnable, handler를 이용해 현재 열려 있는 앱 감지 부트캠프 최종 팀 프로젝트 기록 6  서론이번에는 내가 맡은 기능의 마지막 기능인 허용 앱에 들어갔을 때, 다른 앱을 실행하게 되면 그걸 감지해서 overlay를 띄워주는 기능을 구현할 것이다.다른 앱을 실행하고 나면, 기존의 화면은 background 상태에서 계속 돌아간다는 점을 이용해서 별도의 Thread를 만들어서 현재 열려 있는 앱의 package name을 불러오는 작업을 진행할 것이다.  허용 앱을 실행했을 때, 다른 앱 실행 감지 기능 구현하기다른 앱 실행 감지를 위해서는 usageStatsManager를 이용해서 특정 기간 내의 앱 실행 기록을 구할 수 있다.실행 기록을 가져오는 함수를 만들고, 그 함수를 별도의 Thread에서 반복시켜서 실시간으로 현재 실행되어 있는 앱의 package.. 2024. 9. 5.
[Kotlin] 백준 10987번 모음의 개수 모음의 개수(10987번)Bronze 4#구현 #문자열 문제 내용  문제 접근문자열을 입력받으면 하나씩 보면서 단어가 모음인지 확인해 개수를 세면 된다.단어를 하나씩 보려면 for문을 사용해 주면 된다.  문제 해결 코드더보기import java.io.BufferedReaderimport java.io.InputStreamReaderfun main() = with(BufferedReader(InputStreamReader(System.`in`))) { val string = readLine() val vowels = listOf('a', 'e', 'i', 'o', 'u') var answer = 0 for (str in string) { if (vowels.contain.. 2024. 9. 4.
[Android] android에서 firestore의 데이터 업데이트 및 countdown timer 사용 부트캠프 최종 팀 프로젝트 기록 5  서론이번에 구현할 기능은 앱에서 다른 허용 앱을 실행했을 때, 사용 시간을 카운트다운 타이머로 측정 후, 우리 앱으로 복귀하면 남은 시간을 fireStore에 업데이트하는 기능을 만들어 보았다.  fireStore 데이터 업데이트fireStore 데이터를 불러오기 전에 먼저 카운트다운 타이머를 사용해서 앱의 사용 시간을 구해줄 것이다.먼저 허용 앱을 실행하게 되면, 허용 앱을 여는 동시에 타이머를 작동시켜서 사용 시간을 측정한다. 초기 시작 시간은 각 허용 앱에 설정된 시간(제한 시간)으로 지정한다.허용 앱을 사용하다가 우리 앱으로 돌아오게 되면, 타이머를 멈추고 타이머에 남은 시간을 fireStore에 업데이트한다.허용 앱을 쓰는데 제한 시간이 종료되었는데 우리 앱.. 2024. 9. 3.
728x90