코틀린 7

[Kotlin] 람다함수는 무엇이고 왜 쓰고 어떻게 쓸까?

요즘 Kotlin in Action 을 보면서 예전에 람다에 대해서 정리한 글과 합쳐서 다시 쓰려고한다. 람다란 무엇인가? 람다는 기본적으로 다른 함수에 넘길 수 있는 작은 코드 조각을 뜻한다. 즉, 값처럼 여기저기 전달할 수 있는 동작의 모음이라는 뜻이다. 실행시점에 코틀린 람다 호출에는 아무 부가 비용이 들지 않고, 프로그램의 기본 구성요소와 비슷한 성능을 낸다. 람다는 왜 쓰는가? 1. 코드를 깔끔하게 사용하기 위해 람다가 메서드가 하나뿐인 무명 객체 대신 사용할 수 있다는 사실을 떠올려본다. 안드로이드 개발하며 모두 뷰에 setOnClickListener 를 달아본적이 있을 것이다. setOnClickListener 에onClick 이라는 메서드 가 있는 OnClickListener 를 구현하여 ..

Kotlin 2023.01.01

[Kotlin] String 핸들링을 위한, 코틀린의 String 클래스를 뜯어보자

실제 서비스를 위해 코딩하다보면 String 다뤄야할 때가 많다. 또한 내가 기업 코테를 많이 본 것은 아니지만 코테 볼 때마다 매번 간접적으로나 직접적으로나 String 핸들링 문제가 나온 걸로 기억한다. 매우 쉬운 거라고 생각해서 방심하다가 뒷통수 맞기 딱 좋다. (사실 최근에 맞고 울었다.) 자주 만나는 문제일 수록 많은 코드를 작성하게 되니, 그 코드를 간결하게, 우아하게 그리고 정확하게 코딩하기 위해 String 클래스와 확장함수를 뜯어보며 정리해보려고한다. 실제 서비스이든 알고리즘 테스트이든 도구를 사용해서 시간을 아끼고 로직에 집중하자는 내 스스로의 취지이다. 또한 내부구현을 살펴보면 내가 커스텀 기능을 만들어야할 때 좋은 귀감이 될 수 있다고 생각한다. 일단 넓고 얇게 다루어 상황에 맞게 ..

[Kotlin/프로그래머스] 다리를 지나는 트럭

[문제소개] 트럭을 1칸, 다리를 N (문제의 bridge_length) 칸이라고 했을 때 각 트럭 무게와 다리 무게제한을 고려하여 모든 트럭이 지나가는 데 걸리는 초를 구하는 문제 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr [나의 풀이] 일단 매 초마다 루프를 돌면서 각 반복마다 일차원 조회를 하면 O(N^2) 이고 N 이 10000이므로 시간초과가 날 가능성 때문에 O(N) 으로 풀 수 있는 방법을 고민했다. 그렇다 해도 입력에 따라 결과가 달라지고 경우의 수도 많으므로 시..

[Kotlin/프로그래머스] 거리두기 확인하기 (2021 카카오 채용연계형 인턴십)

코딩테스트 연습 - 거리두기 확인하기 [["POOOP", "OXXOX", "OPXPX", "OOXOX", "POXXP"], ["POOPX", "OXPXP", "PXXXO", "OXXXO", "OOOPP"], ["PXOPX", "OXOXP", "OXPOX", "OXXOP", "PXPOX"], ["OOOXX", "XOOOX", "OOOXX", "OXOOX", "OOOOO"], ["PXPXP", "XPXPX", "PXPXP", "XPXPX", "PXPXP"]] [1, 0, 1, 1, 1] programmers.co.kr [문제 소개] 1. 5 * 5 이차원 배열의 대기실이 주어졌을 때 2. 맨해튼 거리로 2 이하가 되게 사람이 존재해서는 안된다는 거리제한 조건 3. 단, 벽이 존재하여 상하좌우 4방향 기준으로..

[Kotlin/프로그래머스] 콜라츠 추측

요즘 코틀린의 문법에 빠르게 익숙해지기 위해 프로그래머스 Level 1 부터 문제를 풀어보고 있다. 알고리즘 풀다가 자주 마주하는 Int 오버플로우 문제가 나와서 실수하지 않기 위해서 글을 작성한다. 문제 소개 정수가 하나 주어지면 아래와 같은 과정을 거쳐서 1이되는데 몇번이나 그 과정을 거쳐야하는지 반환하는 문제이다. ( 자세한 문제 내용은 아래 링크에서 확인 ) 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. https://programmers.co.kr/learn/courses/30/lessons/12943 코딩테스트 연습 - 콜라츠 추측 1937년 Collatz란 사람에 의해 ..

[Kotlin] 접근제어자 ( visibility modifiers )

- default 접근제어자 public 코틀린의 모든 default 접근제어자는 public 이다. 그래서 따로 접근제어자를 지정해주지 않는다면 class, methods, properties, member variables 등에 모두 접근이 가능하다. - 접근제어자가 붙을 수 있는 키워드들 classes, objects, interfaces, constructors, functions, properties, 그리고 그들의 setters 에 -public 클래스 밖에서도 접근할 수 있다. 위에서 언급한 것처럼 따로 지정해주지 않으면 default 로 public 이 적용된다. - internal 모듈 내에서만 접근이 가능하게 하는 접근제어자이다. 여기서 모듈이란 함께 컴파일되는 코틀린 파일들의 집합을 ..

Kotlin 2021.08.04

[Kotlin] Class (constructor, getter/setter, companion object) 기초

간략한 소개 class classs 는 object 의 청사진이다. 붕어빵틀과 붕어빵 개념? 일 것 같다. codelabs 에서는 Objects are instances of classes 라고 한다. 참고. interface Interface 는 다른 Class 가 구현해야하는 함수에 대한 specification 이다. codelabs 에서는 어항 클래스가 있고 청소 인터페이스가 있다고 했을 때, 청소는 어항말고도 가전제품, 집, 사무실 등 여러 다른 클래스에서도 쓰일 수 있기 때문에 청소를 인터페이스로 빼고 어항 클래스에서 청소 인터페이스를 구현하는 예시를 들어주었다. - 생성자 - 생성자를 클래스 옆에 constructor() 안에 함수 parameter 처럼 쓸 수 있다. ( 그래서 defaul..

Kotlin 2021.08.04