본문 바로가기

전체 글279

[Kotlin, G4] 백준 9935번 문자열 폭발 문자열 폭발(9935번)Gold 4#자료 구조 #문자열 #스택https://www.acmicpc.net/problem/9935 문제 내용  문제 접근첫 번째 줄의 문자열에서 두 번째 문자열이 존재하지 않을 때까지 문자열을 제거한 결과를 출력하는 문제.문자열이 제거되고 남은 문자열들은 서로 붙어서 새 문자열이 된다. 단순히 문자열을 확인해 보면서 문자열을 제거해 나가면 되는 간단한 문제이다.그래서 일단은 replace를 반복시켜서 진행해 보았다.while (true) { val replaceRes = string.replace(removeStr, "") if (replaceRes != string) string = replaceRes else break}결과는 메모리 초과, 애초에 repl.. 2024. 10. 1.
[Kotlin, S2] 백준 14430번 자원 캐기 자원 캐기(14430번)Silver 2#다이나믹 프로그래밍https://www.acmicpc.net/problem/14430 문제 내용  문제 접근wook이 0, 0에서 n, m까지 이동할 때, 오른쪽, 아래쪽으로만 이동하면서 자원을 캘 수 있을 때, n, m까지 도달했을 때, 얻을 수 있는 자원의 최대 개수를 구해야 한다. 얻을 수 있는 최대 자원 개수를 구하는 방법은 입력 예제 1을 예로 설명해 주겠다.5 40 1 0 00 0 1 01 1 0 01 0 1 01 1 0 0// init dp array0 0 0 00 0 0 00 0 0 00 0 0 00 0 0 0 처음의 0, 0 부분은 입력값을 그대로 사용한다.그러면 2차원 array를 모두 0으로 초기화했을 때 0, 0에는 0 또는 1이 오게 될 것이.. 2024. 9. 30.
[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] 공부일지(2024-09-24) 오늘 공부한 내용 정리(2024년 9월 24일)  면접 이론 학습 27일 차면접 이론 학습 27일 차코루틴(Coroutine)이 무엇인가? 어떤 상황에서 유용하게 쓰일 수 있는가?코루틴은 together에 co와 집합을 뜻하는 routine이 합쳐져 협동 루틴을 뜻한다.이전에 실행이 중단된 지점에서 다시 실행을 재개할 수 있는 기능을 가진다.동시성 프로그래밍을 사용해야 할 때, 비동기로 작업을 처리해 멀티태스킹 기능을 만들어야 할 때 사용된다.  Android의 Looper와 MessageQueue의 작동 원리와 사용 방법Looper는 Message Queue를 생성하고 관리하는 역할로 Message나 Runnable 객체를 하나씩 꺼내서 Handler에 전달한다.Looper.loop()을 이용해 무한 .. 2024. 9. 24.
[Android] 공부일지(2024-09-23) 오늘 공부한 내용 정리(2024년 9월 23일)  알고리즘 문제풀이드랍 더 비트(32343번)https://rkdrkd-history.tistory.com/258 [Kotlin, B1] 백준 32343번 드랍 더 비트드랍 더 비트(32343번)Bronze 1#그리디 알고리즘 #브루트포스 알고리즘 #비트마스킹2024 HICON 홍익대학교 프로그래밍 경진대회 B번https://www.acmicpc.net/problem/32343 문제 내용  문제 접근n자리의 2진수에rkdrkd-history.tistory.com  유물 발굴(32344번)https://rkdrkd-history.tistory.com/259 [Kotlin, S5] 백준 32344번 유물 발굴유물 발굴(32344번)Silver 5#구현 #기하학.. 2024. 9. 23.
[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.
[Android] 공부일지(2024-09-20) 오늘 공부한 내용 정리(2024년 9월 20일)  코드카타 문제풀이폭탄 해체(9242번)https://rkdrkd-history.tistory.com/256 [Kotlin, S4] 백준 9242번 폭탄 해체폭탄 해체(9242번)Silver 4#구현 #문자열 #파싱https://www.acmicpc.net/problem/9242 문제 내용  문제 접근별 기호(*)와 공백으로 이루어진 숫자가 입력된다.숫자는 7 segment 숫자 표기법으로 이루어져 있다.그rkdrkd-history.tistory.com  면접 이론 학습 25일 차면접 이론 학습 25일 차정렬 알고리즘이 무엇인가? 정렬 알고리즘을 사용하는 이유는?정렬 알고리즘은 데이터들을 어떤 기준으로 나열시키는 알고리즘이다.정렬 알고리즘은 알고리즘을 배울.. 2024. 9. 20.
[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.
[Android] 공부일지(2024-09-19) 오늘 공부한 내용 정리(2024년 9월 19일)  코드카타 문제풀이a^b(10827번)https://rkdrkd-history.tistory.com/253 [Kotlin, G5] 백준 10827번 a^ba^b(10827번)Gold 5#임의 정밀도 / 큰 수 연산https://www.acmicpc.net/problem/10827 문제 내용  문제 접근a에 소수가 들어오고, b에 지수가 들어올 때, a의 b제곱을 구하기.소수(a)의 b제곱이라, 소수를 정확히rkdrkd-history.tistory.com  가희야 거기서 자는 거 아니야(21771번)https://rkdrkd-history.tistory.com/254 [Kotlin, B1] 백준 21771번 가희야 거기서 자는 거 아니야가희야 거기서 자는 거.. 2024. 9. 19.
[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] 공부일지(2024-09-13) 오늘 공부한 내용 정리(2024년 9월 13일)  코드카타 문제풀이멋쟁이 포닉스(25551번)https://rkdrkd-history.tistory.com/250 [Kotlin, B1] 백준 25551번 멋쟁이 포닉스멋쟁이 포닉스(25551번)Bronze 1#수학 문제 내용  문제 접근포닉스가 옷을 입는 규칙에서 눈여겨볼 것은 옷의 색이다.마스크와 티셔츠의 색이 달라야 하고, 티셔츠와 바지 역시 색이 달라야 한다.rkdrkd-history.tistory.com  모의 면접1차 모의 면접활동 내용 간단 정리어제 공부일지에 잠깐 언급한 모의 면접 예상 문제의 질문들을 기반으로 질문을 해주셨다.예상 질문 말고도 프로젝트 진행 중의 팀 내의 의사소통에 대해 추가적인 꼬리 질문을 던져주시기도 했다.오랜만에 하는 .. 2024. 9. 13.
[Kotlin, B1] 백준 25551번 멋쟁이 포닉스 멋쟁이 포닉스(25551번)Bronze 1#수학https://www.acmicpc.net/problem/25551 문제 내용  문제 접근포닉스가 옷을 입는 규칙에서 눈여겨볼 것은 옷의 색이다.마스크와 티셔츠의 색이 달라야 하고, 티셔츠와 바지 역시 색이 달라야 한다.그러면 옷을 입는 경우의 수가 2가지로 좁혀진다.검은색 마스크 + 흰색 티셔츠 + 검은색 바지흰색 마스크 + 검은색 티셔츠 + 흰색 바지위 2개의 경우만 문제의 1, 2번 규칙을 만족하는 복장이다.이 복장에서 같은 색의 옷을 연속해서 입지 않기 때문에 1, 2번을 번갈아가면서 입게 된다.또한 1번 사용한 옷은 다시 입지 않기 때문에 옷이 모자라게 되면 연속해서 옷을 고를 수가 없다. 문제의 4번째 규칙으로 구현의 힌트를 얻을 수 있다.한 종류.. 2024. 9. 13.
[Android] Firebase Google One-Tap login으로 마이그레이션 부트캠프 최종 팀 프로젝트 기록 10  서론이번에 코드 수정 사항을 스캔하다가 눈에 보이는 것을 발견했다.바로 GoogleSignIn, GoogleSignInClient가 deprecated 되어 있는 것을 발견했다. 이와 관련해서 자료를 찾아보다가 Google에 새로 출시한 one-tap sign in이라는 것을 발견했다.이 로그인 방법은 기존의 방법에 비해 다양한 장점을 가진다.한 번의 클릭으로 로그인이 가능하다.새 사용자는 앱 안에서 쉽게 계정을 만들 수 있다.기존의 비밀번호에 의존하는 방식의 로그인이 아니기 때문에 관련 보안 위협을 줄일 수 있다.개발하는 입장에서도 기존의 방식보다 코드가 간소화되어서 편리해진다.위와 같은 장점이 있는데 안 쓸 이유가 없지 않은가?바로 사용해 보자.  Google .. 2024. 9. 13.
[Android] 공부일지(2024-09-12) 오늘 공부한 내용 정리(2024년 9월 12일)  부트캠프 활동수료 후 취업지원 프로그램 소개활동 내용 간단 정리수료생들에게 취업 지원 제도를 소개하는 특강을 수강했다. 면접 이론 학습 22일 차Https의 특징Https는 HyperText Transfer Protocol over Secure Socket Layer의 약자이다.인터넷에서 사용하는 웹서버와 클라이언트의 인터넷 브라우저 사이에 문자를 전송하기 위한 통신 규약이다. 보안성이 높다는 특징을 가진다.http와는 다르게 통신하는 과정에서 전송 내용을 암호화함으로써 발신자와 수신자를 제외한 중간 매개체에서 통신 내용을 확인할 수 없어서 보안성이 높다.데이터 암호화에는 SSL 인증서를 사용한다. RecyclerView의 동작 원리RecyclerView.. 2024. 9. 12.
[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.
[Android] 공부일지(2024-09-11) 오늘 공부한 내용 정리(2024년 9월 11일)  면접 이론 학습 21일 차면접 이론 학습 21일 차HTTP의 특징과 문제점HTTP는 HyperText Transfer Protocol이다.World Wide Web(WWW)에 내재된 프로토콜이다. 클라이언트가 서버에 요청을 보내면, 서버가 요청에 대한 응답을 보내는 클라이언트-서버 구조로 이루어져 있다.서버가 클라이언트의 상태를 보존하지 않는다. 따라서 응답과 요청이 독립적이다. HTTP는 데이터를 암호화하지 않고 평문으로 전송하기 때문에 중간에 제 3자가 네트워크 상에서 데이터를 엿볼 수 있다. 개인 정보나 민감한 데이터가 노출될 수 있는 보안 취약점을 가진다.  Retrofit의 장점간단한 어노테이션을 통해 요청 메서드의 URL을 정의함으로써 코드가 .. 2024. 9. 11.
[Node.js] Intellij, Vscode에서 Firebase Functions 개발을 위한 Node.js 프로젝트 세팅 부트캠프 최종 프로젝트 기록 8  서론현재 kakao 로그인 기능을 구현하려 하고 있다.kakao login을 그냥 구현하는 게 아닌 firebase authentication과 연동해서 사용하려 한다.그러기 위해서는 firebase functions라는 기능을 사용해야 하는데, firebase functions를 만들기 위해 node.js 세팅을 해주어야 한다.vscode로 하는 방법이 가장 대중적이지만, 나는 intellij idea에서 진행해보려 한다.vscode로도 똑같이 따라서 하면 된다.  Node.js 프로젝트 세팅node.js 설치는 아래의 사이트에서 진행해 주면 된다.https://nodejs.org/en Node.js — Run JavaScript EverywhereNode.js® is.. 2024. 9. 11.
728x90
반응형