본문 바로가기
반응형

전체 글91

LeetCode - Remove Duplicates from Sorted Array 문제 링크 : https://leetcode.com/problems/remove-duplicates-from-sorted-array/ 난이도 : Easy 문제 풀이 : 배열안에 존재하는 중복되는 숫자들을 단 한개씩만 남도록 하는 것이 문제의 핵심이다. 정답을 위한 조건으로는 중복을 제거한 숫자들의 갯수가 몇개인지를 반환하고 nums 배열에 순서대로 재정렬 해야한다. 중복을 제거한 숫자들의 갯수는 Set을 이용하여 간단하게 구할 수 있었다. 문제는 nums 배열의 값을 재정렬 해 주는 것이었는데, 이것도 사실 생각해보니 간단했다. 현재 중복되어 변경할 인덱스를 하나 만든다. 그리고 루프를 돌며 numSet에 존재하지 않는 숫자면 numSet에 넣고 nums 배열의 인덱스 위치의 값을 변경해준 후 인덱스를 .. 2020. 8. 2.
LeetCode - Merge Two Sorted Lists 문제 링크 : https://leetcode.com/problems/merge-two-sorted-lists/ 난이도 : Easy 문제 풀이 : 컴퓨터공학 또는 프로그래밍을 공부한 사람이라면 Merge Sort에 대해 알 것이고 굉장히 익숙한 느낌을 받을 것이다. Merge Sort의 한 부분과 동일하기 때문이다. 1. Int Array 두 개를 합치므로 합친 사이즈인 m+n 만큼의 IntArray를 생성한다. 2. 두 개의 Array를 순회하며 작은 것부터 임시 Array에 추가한다. 3. 위 과정을 거치면 둘 중 하나의 Array는 요소들이 남아있게 된다. 남아있는 요소를 임시 Array에 마저 추가한다. 4. nums1 배열에 결과가 담겨 있어야 하므로 임시 Array의 값을 복사해준다. 소스 코드.. 2020. 7. 30.
[Android] MVVM + AAC + Coroutine + Retrofit + Github API 예제 이번 포스팅은 Github API를 활용해서 특정 키워드로 Github의 저장소들을 검색하는 안드로이드 앱을 만들 것이다. 아래 기술들을 사용하는 것을 목표로 한다. 1. MVVM(Model-View-ViewModel) 아키텍처 패턴을 적용 2. AAC(Android Architecture Component)를 활용 3. 비동기 작업을 위하여 Kotlin의 Coroutine활용 4. API를 호출하기 위해 Retrofit 라이브러리 활용 최종 결과물은 아래와 같은 모습이다. 위에서 볼 수 있듯이 화면 및 기능 자체는 간단하다. EditText 하나, 버튼 하나, RecyclerView 하나 끝이다. 추가적으로 각 아이템을 클릭했을 때 해당 저장소의 웹페이지로 이동시키는 정도로 구현한다. 1. 의존성 추가.. 2020. 7. 13.
코틀린(Kotlin) 문법 뽀개기 - 4. 클래스와 상속, 그리고 인터페이스 코틀린으로 클래스를 작성 해 보자. 코틀린의 클래스는 흔히 하는 Class가 있다. 그 외에도 Data Class, Sealed Class라는 것이 있으나, 이는 나중에 따로 알아보자. 이번 포스팅은 기본적인 클래스와 상속, 그리고 인터페이스에 대해 알아 볼 것이다. 우선 간단한 클래스부터 작성해보자. class ExampleClass(val a: Int, val b: Int, val c: Int) { fun printValues() { println("a = $a, b = $b, c = $c") } } fun main() { val instance = ExampleClass(1, 2, 3) instance.printValues() } 이해가 될것이라 생각한다. main 함수에 객체를 생성하고 메서드를 .. 2020. 6. 27.
LeetCode - Valid Parentheses 문제 링크 : https://leetcode.com/problems/valid-parentheses/ 난이도 : Easy 문제 풀이 : 자주 접하는 괄호 짝 맞추기 문제다. 스택을 사용하면 어렵지 않게 풀 수 있다. 여는 괄호인 (, [, { 가 나오면 스택에 담고, 닫는 괄호인 ), ], } 가 나오면 스택의 Top에 있는 것을 빼내어 짝이 맞는지 검사한다. Top에 쌓인 것이 없거나, 무사히 for-loop를 빠져나왔더라도 마지막에 스택이 비어있지 않을 수 있다. 이 부분만 잘 고려하면 어렵지 않게 풀 수 있따. 소스 코드 : class ValidParentheses { fun isValid(s: String): Boolean { val stack = Stack() for(bracket in s) {.. 2020. 6. 27.
LeetCode - Longest Common Prefix 문제 링크 : https://leetcode.com/problems/longest-common-prefix/ 난이도 : Easy 문제 풀이 : 주어진 문자열들이 공통으로 갖고 있는 가장 긴 접두어를 찾는 문제다. 가장 긴 접두어는 가장 짧은 문자열의 길이보다 작거나 같다는 것만 생각하면 어렵지 않게 풀 수 있다. 가장 짧은 문자열을 기준으로 모든 문자열들의 맨 앞부터 시작하여 공통으로 가지고 있는 것들을 더해가면 된다. 소스 코드 : class LongestCommonPrefix { fun longestCommonPrefix(strs: Array): String { if(strs.isEmpty()) return "" else if(strs.size == 1) return strs[0] val sorted.. 2020. 6. 27.