본문 바로가기

ETC

(8)
에라토스테네스의 체, 소인수 분해 이 글은 공부한 내용을 기반으로 적는 글이오니, 건전한 비판은 언제든 환영합니다. 에르토스테네스의 체 에르토스테네스의 체는 언제 알고리즘을 사용하게 될까? 예를 들면 1~100 까지의 리스트에 담겨있는 정수가 있다. 여기서 문제가 소수는 몇 개인가 확인해야 하는 문제가 주어진다면 단순히 생각하기로는 이중 for문으로 찾을 수 있지만 그러면 너무 시간이 거대하게 걸린다. 하나하나 비교를 하다보면은 불필요한 계산이 행하여 진다. 그래서 어떻게 작성을 할꺼면 먼저 2부터 시작하여서 2의 배수이면 계산이 안들어가고 그 다음에 3의 배수 5의 배수 방식으로 들어간다. import java.util.ArrayList; public class Eratosthenes { public static ArrayList si..
재귀함수 이 글은 공부한 내용을 정리하는 목적으로 적는 글이오니 건전한 비판은 환영합니다. 먼저 함수에 대해서 이야기를 해보자면 1. 값을 입력받아 특정 연산을 수행하는 결과를 반환 예를 들면 public static void main(String[] args){ System.out.println(getResult(3)); } static int getResult(int n){ return n*n; } 위와 같이 어떤 값을 함수에 넣었을 때 그 값을 받아서 어떠한 로직을 처리한 다음에 리턴해주게 되어있다. 2. 함수간의 완변학 분담 예를 들면 public static void main(String[] args){ System.out.println(getResult(3));결과 9 System.out.println..
시간복잡도 이 글은 공부한 내용을 기반으로 정리하는 글이오니 건전한 비판은 환영합니다. 시간 복잡도는 왜 알아야 할까? 같은 프로그램을 작성하였을 때 A라는 사람과 B라는 사람이 하나의 목표를 두고 작성을 하였다. A라는 사람의 프로그램을 실행하였을 때 3초가 걸리고, B라는 사람의 프로그램을 작성을 하였을 때 시간이 10초가 걸린다면 A라는 사람의 프로그램이 빠르기 때문에 1차원 적으로는 A의 시간이 더 빠르다. 시간 복잡도를 아는 방법은 먼저 프로그램을 돌리고 시간을 측정하였을 때, A-Z까지 시간으로 순서를 나누었을 때 일렬적으로 나눠질 수 있다. 즉 같은 입력을 제공하였을 때 어느 프로그램이 가장 빠를 수 있나 측정하는 것이 시간 복잡도이다. 빅 오 표기법 빅오 표기법이란? 시간에 가장 큰 영향을 주는 시간..
프로세스와 쓰레드 이 글은 공부하는 내용을 정리하는 목적으로 작성하는 글이오니, 건전한 비판은 언제든 환영합니다. 프로세스와 쓰레드를 정확히 알아야 하는 이유? 먼저 RxSwift를 공부하기 위해 RxSwift는 비동기를 지원하는 라이브러리이다. 근데 왜 비동기를 무조건적으로 해야할까?에 대한 물음이 먼저였다. 회사에서도 개발자가 나 혼자다 보니, 그런 것을 생각하기 보다는 단순히 비동기는 여러작업을 같이 하는 것이다.라는 정의만 내렸고, 깊이 생각하지는 않았다. 코어 왜 먼저 코어와 쓰레드를 이야기 하냐면, 먼저 컴퓨터의 역사를 알고 개념이 더욱 명확해 질 것이기 때문에 먼저 적는다. 요즘 들어보면 4코어 8쓰레드, 8코어 16쓰레드라고 컴퓨터를 사기 전에 보는 글일 것이다. 예전에는 단일 CPU가 모든 작업을 시분할 ..
기본정렬 이 글은 공부한 내용을 기반으로 정리하는 글이오니 건저한 비판은 언제든 환영합니다. 기본적으로 기본정렬은 선택정렬, 삽입정렬, 버블정렬 이렇게 3가지라고 생각합니다. 그렇다면 정렬은 무엇일까요? 정렬이란? 제가 생각하는 정렬이라고 생각하는 정의는 기준점을 잡고 차례대로 순서를 나열하는 것이라고 생각합니다. 예를 들면 오름차순으로 정렬한다는 것은, 숫자로 설명을 하면 1,2,3,4,5........ 식으로 낮은 숫자부터 높은 숫자로 나열하는 것 입니다. 이렇듯이 기준을 잡고 나열 하는 것을 정렬이라고 생각합니다. 선택정렬이란? 먼저 선택정렬에 대해서 설명을 하겠습니다. 선택정렬이라고 하는 것은 '|'앞은 정렬이 완료가 된 것 입니다. 이게 무슨 이야기냐면, 이제 설명 드리겠습니다. 저는 오름차순으로 숫자를..
완전탐색 완전탐색이란 무엇인가? 완전탐색이라는 것은 모든 것을 다 찾아본다는 이야기이다. 예를 먼저 들어보는게 가장 설명하기가 쉬울것 같아서 예를 먼저 설명하겠습니다. //10개의 상자와 1개의 사과가 있습니다. 이 중에 1개의 사과를 10개의 상자 중에 한 군데에 감추었습니다. //이 때 1개의 사과가 있는 상자를 찾으세요 위와 같은 질문에는 가장 단순한 방법은 한 개씩 상자를 오픈하면서 찾아봅니다. 물론 이 글을 보는 사람에게는 이거보다 ‘이진 탐색’으로 찾는게 더 빠르지라고 이야기 할 수 있겠지만 이 글은 완전탐색을 설명하기 위한 글입니다. ^^ 조금만 참아주세요. 다시 한번 이야기하자면 쉽게 한 개씩 다 찾아보겠습니다. 코드로 설명하자면 public static void main(String[] args)..
깃허브 에러 remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. 갑자기 잘되던 push 가 에러가 발생하였다. 저 내용을 찾아보았는데 Password 인증방식이 달라서 personal access token으로 사용하라는 내용이었다. 이미 깃허브에서는 공지를 한 상황이라서 저 내용을 따른 것이다. 문제해결 깃허브에서 Setting을 들어간다. 2. Developer settings에 들어간다. 3. personal access tokens에 들어간다. 4. Generate new token을 클릭한다. 5. 누르면 이런 내용이 나오는데 필요한 사항이 있으면 체크하고 Generate token 클릭 그리고 중요한 것이 있다 나가지 말고 토큰을 복사한다. 6. Mac keyChain 삭제 commond+space를 누르고 keyChain을 검색합니다. 그 다음 githu..
git-lfs CocoaPod의 네이버 NMapsMap 라이브러리 사용시 100Mb 이상의 용량을 가지고 있어서 Git Push가 불가능 하다는 안내문이 있었기에 git-lfs에 대해서 찾아보았다. git-lfs란? Git Lfs를 먼저 풀어서 보면 Large File Storage라고 볼 수 있다. 이게 무슨 말이냐면 먼저 Git이라는 것은 여러개의 작은 소스코드 파일들을 위한 버전 컨트롤 시스템(VCS)이다. 그럼에도 불구하고 큰 용량 파일을 git repo에 올려야 하는 상황이 발생할 수 있다. 기본적으로 git에 50MB이상 올리면 Warning표시가 나고 100MB이상을 올리면 push가 에러가 발생한다. Git Lfs를 설치를 하게 된다면은 큰 용량이 있는 파일도 올릴 수가 있다. lfs는 용량이 큰 파일을..