반응형

분류 전체보기 303

투 포인터(Two Pointer) 알고리즘

1. 투포인터(Two Pointer) 1번 부터 8번 까지의 공이 존재 할때, 그 중 2, 3, 4, 5, 6번 순차적으로 접근해야 할 경우, 시작 점, 끝 점 으로 편하게 데이터를 나타낼 수 있습니다. 만약, 부분합이 3이 되는 연속 수열의 갯수를 찾아야 한다면, 위 그림과 같이 찾는 값이 부분합 보다 크다면, 끝 인덱스를 1 증가 시켜 데이터의 범위를 증가 시키고, 찾는값이 부분합 보다 작거나, 같다면 시작 인덱스를 1 증가 시켜 데이터의 범위를 감소 시켜, 찾는 값의 가까워지도록 탐색 할수 있습니다. 단, 이 경우 수열의 모든 값은 양의 정수 이어야 합니다. 이러한 원리를 이용해서 1, 2, 3, 4로 이루어진 배열의 부분합이 3이 되는 경우의 수를 모두 구해 보겠습니다. 2. 부분 합이 3이 되는..

Algorithm 2020.10.07

Android의 Handler 와 Looper

핸들러와 루퍼 안드로이드 시스템에서 UI 관련 작업은 Main Thread(UI Thread) 에서 처리해야 합니다. 시간이 오래 걸리는 네트워크 작업이나 테이터베이스 작업들은 별도의 스레드(Worker Thread)에서만 작업을 해야 합니다. 따라서 다운로드 작업, 네트워크 작업은 Worker Thread에서 수행하고, 작업한 결과를 UI에 출력해 주어야 합니다. 이 때 서로 다른 스레드간 통신 작업을 해주어야 합니다. 이때 필요한 것이 핸들러(Handler)와 루퍼(Looper) 입니다. 또한, 아래 그림을 보면 알수 있지만, Handler는 '멀티 스레드 생산자-소비자 디자인 패턴' 을 따르고 있습니다. 여기서, Handler가 생산자(Producer)도 되고, 소비자(Consumer)도 될수 있습..

Android 2020.10.06

구글 드라이브(Google-Drive) 파일 스트림 활용하기

NAS(Network-Attached Storage)는 쉽게 말해서, 네트워크가 되는 외장 하드 입니다. NAS를 사용하시는 분들도 많고, 구글 드라이브, 네이버 N 드라이브를 사용하시는 분들도 많을 텐데요. 저도 개인용 NAS를 너무 구입 하고 싶었습니다. 하지만, NAS, 하드 디스크 구입 비용만 해도 많많치 않습니다. 그래서 오늘은 NAS를 대체 할수 있고, 또 구글 드라이브를 사용 하시는 분들은 구글드라이브를 브라우저를 통해 접속하지 않아도, Windows 드라이브의 하나로 사용할수 있는 방법을 알려 드리려고 합니다. 저는 원래, 위 사진 처럼 구글 드라이브를 Windows의 공유 폴더로 만들어서 '자동 동기화' 기능을 이용해서 따로 제 개인 PC의 하드 디스크의 저장 하지 않고, 모든 저장을 구..

순열 알고리즘

조합 알고리즘 1. 순열 표현 : nPr 서로 다른 n개 중의 r개를 뽑을때, 순서를 포함한 경우의 수 만약, 중복 가능한 n개 중 r개를 뽑으면, 중복 순열 2. 조합 표현 : nCr 서로 다른 n개 중의 r개를 뽑을때, 순서의 상관없 coding-food-court.tistory.com 1. 순열 표현 : nPr 서로 다른 n개 중의 r개를 뽑을때, 순서를 포함한 경우의 수 만약, 중복 가능한 n개 중 r개를 뽑으면, 중복 순열 2. 조합 표현 : nCr 서로 다른 n개 중의 r개를 뽑을때, 순서의 상관없이 뽑는 경우의 수 만약, 중복 가능한 n개 중 r개를 뽑으면, 중복 조합 3. 순열의 갯수 순열의 갯수는 위와 같은 공식으로 구할 수 있습니다. 그럼 factorial(팩토리얼) 재귀 함수를 구현하..

Algorithm 2020.10.02

조합 알고리즘

1. 순열 표현 : nPr 서로 다른 n개 중의 r개를 뽑을때, 순서를 포함한 경우의 수 만약, 중복 가능한 n개 중 r개를 뽑으면, 중복 순열 2. 조합 표현 : nCr 서로 다른 n개 중의 r개를 뽑을때, 순서의 상관없이 뽑는 경우의 수 만약, 중복 가능한 n개 중 r개를 뽑으면, 중복 조합 3. 순열 vs 조합 {A, B} 중의 2개를 뽑는 순열 : {A, B}, {B, A} {A, B} 중의 2개를 뽑는 조합 : {A, B} 4. 조합 점화식 조합은 다음과 같은 점화식이 있습니다. 이 점화식이 나온 이유를 살펴 보겠습니다. n개 중 r개를 뽑는 방법을 2가지로 나누어 생각해 보겠습니다. 1. 어떤 특정한 원소를 포함하고 뽑았을 때 2. 어떤 특정한 원소를 포함하지 않고 뽑았을 때 1. 어떤 특정한..

Algorithm 2020.09.30

고정점 찾기 - 이것이 코딩 테스트다 with java

1. 문제 고정점이란, 수열의 원소 중에서 그 값이 인덱스와 동일한 원소를 의미 합니다. 예를 들어 a = {-15, -4, 2, 8, 13} 이 있을 때 a[2] = 2이므로, 고정점은 2가 됩니다. 이때, 배열이 오름차순으로 정렬 되어 있을 때, 고정점을 출력 하시오. N개의 수열로 이루어져 있고, 둘째 줄에는 수열의 값이 주어집니다. 시간 복잡도는 O(logN) 으로 알고리즘을 설계 해야 합니다. (1

Algorithm 2020.09.24

경쟁적 전염 - 백준 18405 번

18405번: 경쟁적 전염 첫째 줄에 자연수 N, K가 공백을 기준으로 구분되어 주어진다. (1 ≤ N ≤ 200, 1 ≤ K ≤ 1,000) 둘째 줄부터 N개의 줄에 걸쳐서 시험관의 정보가 주어진다. 각 행은 N개의 원소로 구성되며, 해당 위치�� www.acmicpc.net 1. 문제 K개의 바이러스 종류가 존재 합니다. N x N 의 실험실이 존재 합니다. 바이러스는 상, 하, 좌, 우로만 전파 될 수 있고, 전파 될 위치의 다른 바이러스가 이미 전파를 하였으면, 전파 할수 없습니다. 그리고 바이러스의 종류 번호가 낮은 번호가 우선순위를 가지고 전파 됩니다. 바이러스가 전파되지 않은 곳은 0이라고 합니다. 이때 N과 K, 그리고 실험실 칸 마다의 어떤 종류의 바이러스가 전파 되었는지 입력으로 주어 ..

Algorithm 2020.09.24

볼링공 고르기

1. 문제 A, B 두 사람이 볼링을 치고 있습니다. 볼링공의 갯수 N이 주어지고, 볼링공의 무게는 1부터 M까지의 자연수 형태로 존재 합니다. 이때 M이 주어지고, 각각의 무게가 차례대로 주어졌을 때, 두 사람이 고를수 있는 볼링공의 조합의 갯수를 구하시오. 각 볼링공은 무게가 같아도 고유의 번호를 가지고 있습니다. 두 사람은 서로 무게가 다른 공을 고르려고 합니다. 첫째줄은 N과 M이 순서대로 공백을 기준으로 주어지고, 둘째줄에는 볼링공의 무게가 주어집니다. 2. 입력 5 3 1 3 2 3 2 3. 출력 8 4. 접근 1. 볼링공의 무게 별로 개수를 합쳐 집게 합니다. 2. 볼링공의 최소 무게인 1부터 최대 무게 M 까지 반복문을 돌면서 3. (무게가 i 인 볼링공의 개수) * (무게가 i 인 볼링공..

Algorithm 2020.09.24
반응형