[Android/Async]RxJava에서 Throttle과 Debounce
·
Android/도구 및 라이브러리
RxJava에서 Throttle과 Debounce는 각각 데이터 스트림에서 지정된 시간 동안의 버퍼링된 이벤트를 처리하는 방법입니다. 이 두 연산자는 모두 데이터 스트림에서 지정된 간격 이상의 이벤트를 발생시키지 않도록 제어하며, 너무 많은 이벤트가 처리되어 성능 문제가 발생하는 것을 방지할 수 있습니다. Throttle은 이벤트를 지정된 시간 동안 버퍼링한 다음, 시간이 지난 후에 가장 최근의 이벤트를 처리합니다. 예를 들어, 1초 동안 Throttle을 적용하면 1초 동안 이벤트를 버퍼링하고, 1초 이후에 발생한 가장 최근의 이벤트를 처리합니다. 이를 통해 일정 시간 동안 반복적으로 발생하는 이벤트를 제한하고, 지정된 시간 동안 가장 최근의 이벤트만 처리할 수 있습니다. Debounce는 이벤트를 버..
[알고리즘/Kotlin]플로이드-와샬 (Floyd-Warshall)
·
개발/알고리즘
플로이드 와샬(Floyd-Warshall) 알고리즘은 모든 정점에서 모든 다른 정점까지의 최단 경로를 구하는 알고리즘 입니다. 이 알고리즘은 다익스트라(Dijkstra) 알고리즘과는 달리 음의 가중치를 가진 그래프에서도 사용할 수 있습니다. 이 알고리즘은 동적 계획법을 사용하여 구현되며, 시간 복잡도는 O(n^3)입니다. 알고리즘의 동작 방식은 아래와 같습니다. 그래프의 인접 행렬을 만듭니다. 3중 반복문을 이용하여 모든점을 순회합니다. i에서 j로 가는 최단 거리를 d[i][j]라고 할 때, d[i][j] = min(d[i][j], d[i][k] + d[k][j])의 점화식을 이용하여 d[i][j]를 갱신합니다. 이 때, k는 1부터 n까지의 정점입니다. 이제 Kotlin으로 플로이드 와샬 알고리즘을 ..
[Android/Training] 사진을 외부앱으로 전송하기
·
Android/튜토리얼 및 가이드
1. AndroidManifest.xml 파일에 FileProvider를 등록합니다. ... ... 2. res/xml/ 폴더에 provider_paths.xml 파일을 생성하고 파일 제공자가 제공할 경로를 지정합니다. 3. 소스코드 이 코드는 안드로이드 앱에서 이미지를 캡처한 후, 캐시에 저장하고 해당 이미지 파일을 다른 앱으로 공유하는 기능을 구현하고 있습니다. private void saveToCache(String title, Bitmap bitmap) { File storage = getCacheDir(); try{ File file = new File(storage, title+".jpg"); FileOutputStream fos = new FileOutputStream(file); bitma..
[Android/Training] View를 사진으로 저장하기
·
Android/튜토리얼 및 가이드
1. View를 캡처합니다. 현재 시간을 기준으로 사진 제목을 생성합니다. 캡처할 뷰와 사진 제목을 인자로 captureReceipt 함수를 호출합니다. captureReceipt 함수에서 뷰를 캡처하고, Bitmap 형태로 변환합니다. 안드로이드 버전에 따라 저장소의 경로가 다르므로, 안드로이드 버전에 따라 다른 함수를 호출하여 이미지를 저장합니다. private void makeTitle() { SimpleDateFormat sdf = new SimpleDateFormat( "yyyyMMddHHmmss"); Date time = new Date(); String captureTitle = sdf.format(time); // 사진제목 captureView({layout}, captureTitle); ..
[LeetCode/Kotlin]Easy - 20. Valid Parentheses
·
LeetCode/Kotlin | Easy
Valid Parentheses - LeetCode Can you solve this real interview question? Valid Parentheses - Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. An input string is valid if: 1. Open brackets must be closed by the sam leetcode.com 문제 Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if th..
[프로그래머스/Kotlin]Level3 - 가장 먼 노드
·
프로그래머스/Kotlin | Level3
Level3 - 가장 먼 노드 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 문제 설명 n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 제한사항 노드의 개..
[Android/Layout]TextView 일부에 Link를 넣고 싶을 때? Linkify
·
Android/UI-UX 디자인
TextView에서 일부 글자에만 Link를 삽입하고 싶을 때 쓰는 방법입니다. Linkify는 텍스트 조각과 정규식을 가져와 텍스트의 모든 정규식 일치 항목을 클릭 가능한 링크로 바꿔줍니다. private void setLinkify() { Linkify.TransformFilter transformFilter = (matcher, s) -> "{이동하고 싶은 url}"; Pattern pattern = Pattern.compile("{링크를 연결하고 싶은 텍스트}"); Linkify.addLinks(_binding.agree2, pattern, "", null, transformFilter); } Linkify.MatchFilter 패턴과 일치하는 문자 범위를 검사하고 일치를 실행 가능한 링크로 전환..
[프로그래머스/Kotlin]Level3 - 순위
·
프로그래머스/Kotlin | Level3
Level3 - 순위 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 문제 설명 n명의 권투선수가 권투 대회에 참여했고 각각 1번부터 n번까지 번호를 받았습니다. 권투 경기는 1대1 방식으로 진행이 되고, 만약 A 선수가 B 선수보다 실력이 좋다면 A 선수는 B 선수를 항상 이깁니다. 심판은 주어진 경기 결과를 가지고 선수들의 순위를 매기려 합니다. 하지만 몇몇 경기 결과를 분실하여 정확하게 순위를 매길 수 없습니다. 선수의 수 n, 경기 결과를 담은 2차원 배열 results가 매개변수로 주어질 때 정확하게 순위를 매길 수 있는 선수의 수를 retu..
[프로그래머스/Kotlin]Level3 - 베스트앨범
·
프로그래머스/Kotlin | Level3
Level3 - 베스트앨범 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 문제 설명 ​스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 plays가 주어질..
[프로그래머스/Kotlin]Level3 - 연속 펄스 부분 수열의 합
·
프로그래머스/Kotlin | Level3
Level3 - 연속 펄스 부분 수열의 합 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 어떤 수열의 연속 부분 수열에 같은 길이의 펄스 수열을 각 원소끼리 곱하여 연속 펄스 부분 수열을 만들려 합니다. 펄스 수열이란 [1, -1, 1, -1 …] 또는 [-1, 1, -1, 1 …] 과 같이 1 또는 -1로 시작하면서 1과 -1이 번갈아 나오는 수열입니다.예를 들어 수열 [2, 3, -6, 1, 3, -1, 2, 4]의 연속 부분 수열 [3, -6, 1]에 펄스 수열 [1, -1, 1]을 곱하면 연속 펄스 부분수열은 [3, 6, 1]이 됩니다...
[프로그래머스/Kotlin]Level3 - 기둥과 보 설치
·
프로그래머스/Kotlin | Level3
Level3 - 기둥과 보 설치 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 빙하가 깨지면서 스노우타운에 떠내려 온 **"죠르디"**는 인생 2막을 위해 주택 건축사업에 뛰어들기로 결심하였습니다. "죠르디"는 기둥과 보를 이용하여 벽면 구조물을 자동으로 세우는 로봇을 개발할 계획인데, 그에 앞서 로봇의 동작을 시뮬레이션 할 수 있는 프로그램을 만들고 있습니다.프로그램은 2차원 가상 벽면에 기둥과 보를 이용한 구조물을 설치할 수 있는데, 기둥과 보는 길이가 1인 선분으로 표현되며 다음과 같은 규칙을 가지고 있습니다. 기둥은 바닥 위에 있거나 보..
[Android/Async]Process, Thread에 대한 기본개념
·
Android/네트워킹
Process란? 메모리에 올라와 있는 실행중인 프로그램 인스턴스. 운영체제로부터 시스템 자원을 할당받는 작업의 단 사용 중인 파일, 데이터, 프로세서의 상태, 메모리영역 주소 공간, 쓰레드 정보, 전역 데이터가 저장된 메모리 부분 등 수많은 자원을 포하하는 개념. 종종 스케줄링의 대상이 되는 작업이라고 불리기도 함. Process 상태 전이 Dispatch (ready → running): 여러 프로세스들 중 한 프로세스를 선정하여 CPU에 할당 Time Run Out (running → ready): 할당된 시간이 지나면 Timeout Interrupt Event Wait (running → waiting): I/O 입출력 발생 Wake-Up (waiting → ready): I/O 요청이 완료되면 ..
TCP/UDP 통신과 HTTP 통신
·
개발/네트워크 및 데이터 처리
HTTP 통신 Question을 물어보면 반드시 Answer이 돌아오는 비연결지향적인 단방향 통신 언제든 요청을 하면 그에 해당하는 답을 줌. TCP 통신 (Socket 통신) 1:1 통신 서로가 통신할 수 있는 상태를 먼저 인증을 하고 나서 통신을 하는 연결지향적인 양방향 통신. 서로에게 언제든 실시간으로 상태를 보낼 수 있으며, 받을 수도 있음. HTTP통신과는 다르게 Handshake라는 과정을 거치며 소켓을 각자 생성하여 서로에 대한 상태를 상시 확인할 수 있음. Question을 물어보면 Answer를 받을 수도 있고 못받을 수도 있음. 물어보지 않았는데 받을 수도 있음. 실시간 처리에서 많이 이용 UDP 통신 (Socket 통신) 1:N 통신 패킷 순서가 보장되지 않음. 중요하지 않은 데이터들..
[프로그래머스/Kotlin]Level3 - 징검다리 건너기
·
프로그래머스/Kotlin | Level3
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 카카오 초등학교의 "니니즈 친구들"이 "라이언" 선생님과 함께 가을 소풍을 가는 중에 징검다리가 있는 개울을 만나서 건너편으로 건너려고 합니다. "라이언" 선생님은 "니니즈 친구들"이 무사히 징검다리를 건널 수 있도록 다음과 같이 규칙을 만들었습니다. 징검다리는 일렬로 놓여 있고 각 징검다리의 디딤돌에는 모두 숫자가 적혀 있으며 디딤돌의 숫자는 한 번 밟을 때마다 1씩 줄어듭니다. 디딤돌의 숫자가 0이 되면 더 이상 밟을 수 없으며 이때는 그 다음 디딤돌로 한번에 여러 칸을 건너 뛸 수 있습니다. ..
[프로그래머스/Kotlin]Level3 - 합승 택시 요금
·
프로그래머스/Kotlin | Level3
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 밤늦게 귀가할 때 안전을 위해 항상 택시를 이용하던 무지는 최근 야근이 잦아져 택시를 더 많이 이용하게 되어 택시비를 아낄 수 있는 방법을 고민하고 있습니다. "무지"는 자신이 택시를 이용할 때 동료인 어피치 역시 자신과 비슷한 방향으로 가는 택시를 종종 이용하는 것을 알게 되었습니다. "무지"는 "어피치"와 귀가 방향이 비슷하여 택시 합승을 적절히 이용하면 택시요금을 얼마나 아낄 수 있을 지 계산해 보고 "어피치"에게 합승을 제안해 보려고 합니다. 위 예시 그림은 택시가 이동 가능한 반경에 있는 ..
뿌꾸 빵
'분류 전체보기' 카테고리의 글 목록 (8 Page)