1. Intent란?Intent는 Android의 컴포넌트 간 통신(IPC, Inter-Process Communication) 을 위한 메시징 객체이다. Intent를 사용하면 Activity, Service, BroadcastReceiver 등과 데이터를 주고받으며 시스템의 다양한 기능을 활용할 수 있다.Intent의 주요 기능Activity 간 전환Service 시작 및 바인딩Broadcast 메시지 전송 및 수신데이터 공유 및 전달시스템 기능 호출 (카메라, 갤러리, 전화 앱 실행 등) 2. Intent의 유형Intent는 크게 명시적(Explicit Intent) 과 암시적(Implicit Intent) 으로 구분된다.2.1 명시적 Intent (Explicit Intent)특정한 컴포넌트(Ac..
1. Recomposition(리컴포지션)이란?Recomposition(리컴포지션)은 Jetpack Compose에서 상태(State)의 변경에 따라 필요한 UI만 다시 그리는 과정을 의미한다.기존 XML 기반 View 시스템에서는 findViewById()를 통해 특정 View를 직접 변경했지만, Compose는 선언형(Declarative) 방식을 사용하여 상태 값이 변경되면 해당하는 UI 요소만 다시 렌더링(Recompose)한다.즉, Recomposition은 상태 기반 UI 업데이트의 핵심 개념이며, 이를 이해하면 불필요한 UI 업데이트를 방지하고 성능을 최적화할 수 있다. 2. Recomposition이 발생하는 원리1) Composable 함수와 상태(State)Composable 함수는 컴..
1. Jetpack Compose란?Jetpack Compose는 Android의 최신 UI 툴킷으로, 선언형(Declarative) 방식을 기반으로 UI를 구성할 수 있도록 설계되었다. 기존의 XML 기반 UI 작성 방식보다 직관적이며, 코드 양을 줄이고, 재사용성을 높일 수 있는 장점이 있다.Compose는 Kotlin 언어를 기반으로 동작하며, 보다 유연한 UI 개발이 가능하다. 특히 상태(State) 기반의 UI 렌더링 방식을 지원하여 동적인 UI를 효율적으로 관리할 수 있다. 2. Jetpack Compose의 주요 특징선언형 UI (Declarative UI)기존 XML 방식은 명령형(Imperative) 방식으로, UI 요소를 직접 조작하고 업데이트해야 했다. 하지만 Compose는 선언형 ..
문제https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1www.acmicpc.net 어떻게 풀 것인가?이 문제는 우선순위 큐(PriorityQueue)를 사용하여 효율적으로 중간값을 찾는 문제이다.기본적으로 2개의 우선순위 큐(MinHeap, MaxHeap)를 활용하면 쉽게 해결할 수 있다. MaxHeap (왼쪽 그룹)중간값을 기준으로 작거나 같은 값들을 저장.최댓값을 빠르게 구하기 위해 내림차순 정렬.PriorityQueue maxHeap = new Priori..
문제https://www.acmicpc.net/problem/1941 어떻게 풀 것인가?이 문제는 백트래킹(Backtracking) 을 이용해서 풀었다.우선 문제를 잘 읽어보면 배열의 크기와 조건이 크지 않음을 알 수 있다.즉, 브루트포스(완전 탐색) 및 백트래킹을 사용해도 시간 초과 없이 해결할 수 있다.따라서, 25명 중 7명을 선택하는 조합(combination)을 수행한 후,선택된 7명이 서로 연결되어 있는지 확인하고,최소 4명이 ‘이다솜파’(S)인지 확인하는 방식으로 접근했다. 풀면서 놓쳤던점DFS 탐색 방식의 오류단순히 DFS로 인접한 학생을 탐색하는 것이 아니라, 25명 중 7명을 조합으로 선택한 후, 그 7명이 하나의 연결된 그룹인지 확인해야 했다.즉, DFS로 직접 7명을 선택하면 모든 ..
컴퓨터에서의 실수 표현 방식컴퓨터에서 실수를 표현하는 방식에는 두 가지가 있다.고정 소수점(Fixed Point) 방식부동 소수점(Floating Point) 방식 고정 소수점(Fixed Point) 이란?고정 소수점(fixed point)은 정수를 표현하는 비트와 소수를 표현하는 비트 수를 미리 고정하여, 해당 비트만을 활용하여 실수를 표현하는 방식이다.소수점의 위치가 고정되어 있다.숫자를 저장할 때 소수점의 위치가 미리 정해져 있다.예를 들어, Q8.8 형식이면 정수부 8비트 + 소수부 8비트로 고정됨.즉, 모든 숫자는 항상 같은 위치에 소수점이 있다고 가정하고 저장됨.개념 및 원리처음 1비트는 부호(Sign)를 나타낸다. 양수는 0, 음수는 1.다음 15비트는 정수부(Integer Part)를 나타..
문제https://www.acmicpc.net/problem/1916 1916번: 최소비용 구하기첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그www.acmicpc.net 어떻게 풀 것인가?문제의 제목부터가 "최소비용 구하기" 이다. 그래서 다익스트라 최단경로 구하는 알고리즘을 사용하였다.사실 그래서 처음 접근 자체는 크게 어렵지 않았다.내 코드의 핵심은 "우선순위 큐를 활용한 다익스트라 최단 경로 탐색" 이라고 볼 수있다. 우선순위 큐를 사용하는 다익스트라 알고리즘의 시간 복잡도는 O((V + E) log V) 이다. Priori..
문제https://www.acmicpc.net/problem/11729 어떻게 풀 것인가?컴퓨터 공학부 전공자라면 자료구조 혹은 알고리즘 수업 시간에 재귀를 공부하면서 항상 자주보는 문제였을 것 이다. 나는 사실 과거에 기억에 의존하여 문제를 풀었기때문에 굉장히 쉬웠지만 그래도 한번 차근차근 문제를 뜯어보자. 우선 하노이의 탑문제를 살펴보자.일단, 하노이탑의 가장 큰 규칙은 "작은 원판 위에 큰 원판은 올 수 없다" 이다. 세 개의 기둥(A, B, C)과 여러 개의 크기가 다른 원판이 있다.처음에는 원판들이 가장 큰 것부터 가장 작은 것까지 차례대로 한 기둥(A)에 쌓여 있다.이 원판들을 다른 기둥(C)으로 모두 옮겨야 한다.단, 다음과 같은 규칙을 반드시 지켜야 한다.한 번에 하나의 원판만 이동할 수 ..
문제https://www.acmicpc.net/problem/2133 어떻게 풀 것인가?처음 문제를 풀었을 때 우선적으로는 DP가 떠올랐다.DP 정리는 아래에 있다.https://superohinsung.tistory.com/198 [Algorithm] 동적 계획법(Dynamic Programming)동적 계획법(Dynamic Programming) 동적 계획법(Dynamic Programming, DP)란 컴퓨터 프로그래밍 기법 중 하나로, 주로 최적화 문제나 중복되는 부분 문제를 효율적으로 해결하는 데 사용되는 알고리즘 설계superohinsung.tistory.com 세로 3칸의 크기는 고정되었다. 즉, 주어지는 N에 따라서 타일을 채울 수 있는 경우의 수가 달라진다.그래서 간단하게도 이 문제는 N..
문제https://www.acmicpc.net/problem/11758 어떻게 풀 것인가?문제 분석 : 큰 알고리즘 사용성에 대해서 보이지 않았다.-> 그래서 우선 내가 알고 있는 수학과 구현이라는 관점에서 접근하였다. 방향을 알기위해서는 각도가 필요하다고 생각했다. (이 부분은 다른분의 해설을 참고하였다.) 이 과정에서 기하학 입문에서 다루어지는 신발끈 공식에 대해서 알게 되었다. 세 점이 주어졌을 때, 신발끈 공식을 사용하여 결과값이 0보다 크면 반시계 방향, 0이면 일직선, 0보다 작으면 시계 방향으로 구할 수 있다고 한다. 좀 더 자세하게 알아보자 .신발끈 공식(또는 "shoelace theorem")은 주어진 점들이 이루는 다각형의 넓이를 구하는 방법으로 알려져 있지만, 이를 사용해서 세 점의 ..
이 글은 저의 2024년 1월 ~ 12월까지의 회고록입니다.이전의 회고록은 https://superohinsung.tistory.com/193 귀한 분이 누추한 곳에 와주셔서 감사합니다.2024년 1월 ~ 2월 : 취업준비가 아닌 알바를?24년도 1월 ~ 2월까지는 취업준비가 아닌 알바를 해야만 했다. 작년 우테코와 싸피 그리고 지원했던 모든 회사에서 불합격 소식을 받고 멘탈이 나간 나는 사실 취업 걱정보다 지금 당장 통장 걱정이 앞섰던 것 같다.다행히 좋은 조건으로 인맥?을 통해서 좋은 알바를 하면서 퇴근 이후에 간간히 공부를 할 수 있었다.또한 이때 당시 ADSP를 도전했는데 안타깝게도 불합을 받았다.사실 지금 생각해보면 데이터분석, 인공지능 기초도 없던 내가 2일만 공부하고 시험 본 것이 무슨 자신..
문제https://www.acmicpc.net/problem/15486 어떻게 풀 것인가?주어진 날짜와 수익 배열을 통해서 최대 수익을 낼 수 있는 경우를 찾으면 되는 문제였다. 해당 문제는 Bottom-up 방식으로 1일부터 차례대로 최댓값을 갱신해주도록하면서 풀었다. 1일차 (N==1)dp[1] = 0, // 1일에 얻을 수 있는 최대 금액 (max) // 다음날 nxt = 1 + T1 = 4 dp[4] = Math.max( dp[4], dp[1] + P1) = 10 // 1일을 마치고 4일에 얻은 최대 금액 10 저장 2일차 (N==2)dp[2] = 0, // 2일에 얻을 수 있는 최대 금액 (max) // 다음날 nxt = 2 + T2 = 7 dp[7] = Math.max( dp[7], dp..