전체 글

안드로이드 개발자 꿈나무의 블로그입니다 :)
알고리즘

[알고리즘] DFS - 깊이 우선 탐색이란?

Intro. 안녕하세요 Pu드로이드 입니다^^ 취업차.. 코딩테스트 준비를 위해 1일 1백준 알고리즘 풀이를 꾸준히 하고 있는데요! 더 나은 문제 접근을 위해 유튜브 바킹독님의 영상으로 알고리즘 기본기를 다질 계획이며, 동시에 블로그 포스팅을 통해 정보를 기록하고 공유하려 합니다! 궁금한 점 질문, (정중한)조언을 매우 매우 환영하니 부담 없이 댓글 부탁드려요! DFS 깊이 우선 탐색 - Depth First Search 깊이 우선 탐색 방법 또한 그래프 탐색 방식 중 하나입니다. BFS가 중심을 기준으로 가장 가까운곳부터 탐색하는 방법이였다면, DFS는 이름답게 깊이를 우선으로 탐색합니다! 위 그림과 같이 중심으로부터 임의의 한곳을 정해 더이상 탐색이 불가할 때 까지 탐색하는 알고리즘이며 이를 구현하기..

알고리즘

[알고리즘] BFS - 너비 우선 탐색이란?

Intro. 안녕하세요 Pu드로이드 입니다^^ 취업차.. 코딩테스트 준비를 위해 1일 1백준 알고리즘 풀이를 꾸준히 하고 있는데요! 더 나은 문제 접근을 위해 유튜브 바킹독님의 영상으로 알고리즘 기본기를 다질 계획이며, 동시에 블로그 포스팅을 통해 정보를 기록하고 공유하려 합니다! 궁금한 점 질문, (정중한)조언을 매우 매우 환영하니 부담 없이 댓글 부탁드려요! BFS 너비 우선 탐색 - Breadth First Search 너비 우선 탐색은 그래프 탐색 방법중 하나로, 그림과 같이 중심으로부터 가장 가까운곳을 우선적으로 탐색하는 알고리즘입니다! 그림의 숫자를 보면 1을 중심으로 주변부터 탐색하는것을 확인할 수 있는데요, 이를 구현하기 위해 보통 큐를 사용합니다. FIFO 이라는 큐의 특성을 사용하여 중..

알고리즘

[알고리즘] 자료구조 스택, 큐, 덱

Intro. 안녕하세요 Pu드로이드 입니다^^ 취업차.. 코딩테스트 준비를 위해 1일 1백준 알고리즘 풀이를 꾸준히 하고 있는데요! 더 나은 문제 접근을 위해 유튜브 바킹독님의 영상으로 알고리즘 기본기를 다질 계획이며, 동시에 블로그 포스팅을 통해 정보를 기록하고 공유하려 합니다! 궁금한 점 질문, (정중한)조언을 매우 매우 환영하니 부담 없이 댓글 부탁드려요! 자료구조란? 데이터들이 모여있는 약속된 구조 + 자료의 삽입 삭제등에 규칙이 존재하기 때문에 상황에 따라 매우 효율적. 자료구조는 컴공 학과라면 가장 초반에 배우는 내용 중 하나로 정말 기초이지만 다양한 알고리즘 문제 풀이에서 사용될 수 있더라구요!! 예를들어 괄호 문제(백준 4949)에는 스택 자료구조가 유용하게 쓰이고 BFS(너비 우선 탐색 ..

알고리즘

[알고리즘] 배열, 연결리스트 with Kotlin

Intro. 안녕하세요 Pu드로이드 입니다^^ 취업차.. 코딩테스트 준비를 위해 1일 1백준 알고리즘 풀이를 꾸준히 하고 있는데요! 더 나은 문제 접근을 위해 유튜브 바킹독님의 영상으로 알고리즘 기본기를 다질 계획이며, 동시에 블로그 포스팅을 통해 정보를 기록하고 공유하려 합니다! 궁금한 점 질문, (정중한)조언을 매우 매우 환영하니 부담 없이 댓글 부탁드려요! 배열 특징 추가적으로 소모되는 메모리 양이 거의 없음 메모리 상에 붙어있어서 Cache hit rate가 높음 메모리 연속한 구간을 잡아야해서 할당 제한 시간복잡도 인덱스 접근 및 변경 : O(1) 맨 처음 원소 제거 : O(1) 맨 끝 원소 추가 : O(1) 맨 끝 원소 제거 : O(1) 임의의 위치 원소 추가 : O(n) 임의의 위치 원소 제..

알고리즘

[알고리즘] 시간복잡도, Kotlin 자료형

Intro. 안녕하세요 Pu드로이드 입니다^^ 취업차.. 코딩테스트 준비를 위해 1일 1백준 알고리즘 풀이를 꾸준히 하고 있는데요! 더 나은 문제 접근을 위해 유튜브 바킹독님의 영상으로 알고리즘 기본기를 다질 계획이며, 동시에 블로그 포스팅을 통해 정보를 기록하고 공유하려 합니다! 궁금한 점 질문, (정중한)조언을 매우 매우 환영하니 부담 없이 댓글 부탁드려요! 1. 시간복잡도 시간 복잡도 : 입력값에 대해 내가 구상한 코드의 동작시간이 얼마나 걸릴지 예측할 수 있는 척도! 백준 문제를 풀다보면 시간 초과와 같은 상황과 마주합니다. 이는 주어진 문제의 제한 시간 조건 고려하지 못해 발생하는 일인데요, 쉽게 말해 본인이 짠 코드가 속도 측면에서 비효율적이다..! 라고 볼 수 있을것 같습니다. 이때, 얼마나..

Android

[Android] Companion Object 와 초기화 타이밍!!

[ Intro.. ] android kotlin 코드 예시를 찾아보면 이런 구조의 Companion object를 간혹 발견할 수 있다. 그냥 oncreate 위에 val gap = " " 로 구성해도 같은 결과일 것 같은데, 왜 Companion object에 사용할까?? 답부터 말하면, 1. 메모리에 올라가는 타이밍이 빨라짐. 2. Companion object 는 "객체" 로 관리됨 (자바의 Static과 비교됨). (저번 포스팅에서는 Companion Object와 비교되는 Java의 Static과 JVM에 대해 공부했으니 참고해주세요! https://pudroid.tistory.com/8) 3. 싱글톤으로 관리됨. 4. 따라서 공통 데이터 관리가 가능하고, 상황에 따라 메모리 관리 효율적. 이번..

Android

[Android] JVM 과 Static 멤버의 특징 (메모리, 초기화 ..)

[ Intro.. ] android kotlin 코드 예시를 찾아보면 이런 구조의 Companion object를 간혹 발견할 수 있다. 이녀석이 무엇일까 고민하던 중 JAVA Static과 비교는 글이 되게 많아 간단히 다뤄보려한다. 이번 포스팅에서는 1. Kotlin Companion Object 와 비교되는 Java의 Static 과 특징 2. JVM에 의한 메모리 초기화 에 대해 다룬다. (사용법은 다루지 않는다!) [ Java의 Static ] Static 키워드란? "특정 멤버(변수, 메소드)를 클래스 수준으로 선언하고 공유하는데 써먹는 키워드" 이것만 봐서는 무슨 말인지 이해가 안될것이다. Static 사용 예시 예를 들어서 설명해보겠다. Static를 쓰는 예시는 다음과 같다. 위 예시와 ..

Android

[Android] Context 의 정의와 종류.. 근데 잘못쓰면 메모리 누수?!

[ Intro.. ] ViewModel 내부에서 Context를 써먹을 상황이 있었다. (DB, SharedPrefernces.. 등) 저렇게 변수를 만들고 ViewModel 에서 Activity의 Context를 참조한 후 context 값을 넣어 활용하려 했으나, 갑작스레 형광팬이 그어졌다..!!!! 읽어보니 메모리 누수가 발생한다는 경고문 이였다..! 최근 진행 프로젝트와 관련하여 메모리 누수로 인해, 앱이 무거워지고 느려지며 버벅이는 현상을 체험하고있던 나는 이게 뭔지 걱정이 되었다..ㅜㅜ 메모리 누수 방지를 위해 Context가 무엇인지 이번포스팅에서 설명하고, 위 문제를 극복하는 방법을 다음 포스팅에서 정리해보려 한다!! [ Context 란? ] 공식 문서를 정리해보면 다음과 같다. 1. 어..

pupu_2
Pudroid