전체 글 108

코틀린(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 함수에 객체를 생성하고 메서드를 ..

개발/Kotlin 2020.06.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) {..

Algorithm/Leetcode 2020.06.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..

Algorithm/Leetcode 2020.06.27

LeetCode - Roman to Integer

문제 링크 : https://leetcode.com/problems/roman-to-integer/ 난이도 : Easy 문제 풀이 : Symbol에 대하여 정해진 값이 있다. 그리고 이 Symbol들을 조합하여 숫자를 표현한다. 이 때, 어떤 Symbol 두 개의 조합은 특정한 숫자를 나타낸다는 조건이 있다. IV(4), IX(9), XL(40), XC(90), CD(400), CM(900) 에 해당한다. 어떤 Symbol에 해당하는 값을 매핑시켜야 하고 조합이 몇 개 되지 않으므로 HashMap 자료구조를 사용하여 이 조합들의 값을 매핑시킨다. 그리고 주어진 문자열을 순회하면서 조합에 해당하는 값을 더해준다. 소스 코드 : class RomanToInteger { companion object { va..

Algorithm/Leetcode 2020.06.27

LeetCode - Reverse Integer

문제 링크 : https://leetcode.com/problems/reverse-integer/ 난이도 : Easy 문제 풀이 : 주어진 숫자를 거꾸로 뒤집는 문제이다. 10으로 나눈 나머지를 계속하여 자릿수를 만들면서 더해주면 뒤집을 수 있다. 다만 주의할 점은 32-bit signed integer를 사용한다는 부분이다. 이 Integer의 범위를 넘어간 값은 0을 반환해야 한다. 그래서 결과값이 이 범위를 넘어가는지 안넘어가는지 체크하기 위해 Long 자료형을 사용해야 한다. 소스 코드 : class ReverseInteger { fun reverse(x: Int): Int { var answer: Long = 0 var num = x while(num != 0) { answer = answer ..

Algorithm/Leetcode 2020.06.27

LeetCode - Two Sum

문제 링크 : https://leetcode.com/problems/two-sum/ 난이도 : Easy 문제 풀이 : nums 배열에서 target을 만들 수 있는 두 개의 숫자 조합을 찾아 인덱스를 IntArray로 반환하는 문제이다. 두 숫자를 각각 A, B라 하고 두 숫자를 합쳤을 때 나오는 값을 C라고 하자. 그럼 A+B=C 이다. A를 선택했을 때, C를 만들 수 있는 숫자 B는 C-A로 구할 수 있다. 그렇다면, A를 선택했을 때 나머지 숫자들 중 B가 존재하는지 여부를 알고 그 B의 위치를 알면 답을 구할 수 있다. 두 개의 for-loop을 사용하여 풀 수 있지만, 시간복잡도를 낮추기 위해 HashMap 자료구조를 사용한다. HashMap의 Key에 숫자를, Value에 그 숫자의 위치를 ..

Algorithm/Leetcode 2020.06.27

코틀린(Kotlin) 문법 뽀개기 - 3. 함수

코틀린으로 함수를 작성 해 보자. 기본적인 개념과 작성방법에 대해 간단하게 설명한다. 함수는 사실 굉장히 익숙한 단어다. (수학..) 쉽게 얘기하자면 f(x) = ax+b 와 같은 것이다. 프로그래밍에서 함수도 크게 차이가 없다. 그리고 이 포스팅을 하면서 이미 함수는 사용되고 있었다. Hello Kotlin을 찍었던 코드를 다시 보자. fun main() { println("Hello Kotlin!") } fun은 function(함수)를 의미하고, main은 그 함수의 이름이다. 그리고 main뒤의 ()는 매개변수가 들어갈 자리인데, 여기선 없다. 그리고 println("Hello Kotlin!")이 함수의 내용이고 결과물이 된다. 그리고 println도 사실 함수다. 좀 더 이해하기 쉬운 직관적인 ..

개발/Kotlin 2020.06.14

코틀린(Kotlin) 문법 뽀개기 - 2. 기본 문법(변수, 제어문, 반복문)

코틀린의 변수, 제어문, 반복문을 알아보자. 다른 프로그래밍 언어를 해 보았다면 큰 문제없이 이해가 될 것이다. 1. 변수 선언 // 변수 선언 var intVar: Int = 3 val intVal: Int = 3 intVar = 4 // var은 변경 가능 intVal = 4 // val은 변경 불가능, 컴파일 에러가 발생한다. 우선 변수 선언은 var과 val이 있다. var은 변경 가능한 변수다. 위의 코드에서 intVar = 4는 정상 동작한다. val은 변경 불가능한 변수다. 그래서 intVal = 4는 IDE에서 빨간 줄을 그어 줄 것이며, 컴파일 에러가 발생한다. var 변수명: 변수타입 = 값 val 변수명: 변수타입 = 값 과 같이 선언한다. // val stringVar1: Strin..

개발/Kotlin 2020.06.09

코틀린(Kotlin) 문법 뽀개기 - 1. Hello Kotlin!

코틀린으로 안드로이드 개발을 한지도 꽤 지났다. 어느정도 익숙하긴 하지만.. 코틀린 자체의 문법을 공부 할 필요성을 조금 느꼈다. 얼마 전 코틀린으로 코딩 테스트에 참가했는데, 파이썬으로 하는 것이 익숙하기도 하고 안드로이드 스튜디오 위에서만 코틀린을 사용하다 보니 순탄하지 않았다. 이런 이유도 그렇고 코틀린 자체의 문법도 모르는 부분이 많아서 정리하려고 한다. 역시 프로그래밍 언어 공부의 시작은 Hello World부터 찍는것이지. 1. IDE 설치 https://www.jetbrains.com/idea/download/#section=windows Download IntelliJ IDEA: The Java IDE for Professional Developers by JetBrains Download..

개발/Kotlin 2020.06.09

[Android] Fragment로 Activity 구성 및 통신 - 3

이전 포스팅에서 Interface를 활용하여 Activity와 Fragment의 통신을 구현 해 보았다. 이번 포스팅은 예고했던 대로 EventBus와 ViewModel을 활용하는 방법을 소개 할 것이다. EventBus -> ViewModel 순으로 소개한다. - EventBus 라이브러리 EventBus라이브러리는 아래 두 가지가 있다. 1. Square사의 Otto (https://github.com/square/otto) 2. greenrobot의 EventBus (https://github.com/greenrobot/EventBus) 이 예제에서는 2번의 greenrobot의 EventBus를 사용한다. Github 링크를 통해 라이브러리에 대해 알아보는 것을 추천한다. - EventBus란? ..

개발/Android 2020.05.24
반응형