전체 글236 [프로그래머스 *Java] - 큰 수 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 조건 제한 시간 : 1시간 이내 문제설명은 짧지만, 로직을 짜기 위한 생각을 오래 해야했던 문제였다. 로직 구현은 코드를 보고 실명하는게 빠를 거 같다. 코드를 확인해보자. 전체 코드 class Solution { public String solution(String number, int k) { StringBuilder answer = new StringBuilder(""); int start .. 2022. 7. 23. [Kotlin IN ACTION] - Kotlin open / final / abstract 상속 제어(접근) 변경자 open 변경자 자바에서는 final 을 사용한 클래스는 상속이 안된다는 걸 알고 있을 것이다. 반대로 말을하자면, final 을 안 쓴 클래스는 모든 클래스가 상속 받을 수가 있다. 하지만 이렇게 기본적으로 상속이 가능하면 편리한 경우도 많지만, 문제가 생기는 경우가 많다. 취약 기반 클래스(fragile base class) 라는 문제가 있다. 그게 무엇이냐면, 하위클래스가 기반 클래스에 대해 가졌던 가정이 기반 클래스를 변경함으로써 깨져버린 경우에 생긴다. 어떤 클래스가 자신을 상속하는 방법에 대해 정확한 규칙(어떤 메서드를 어떻게 오버라이드해야 하는지 등)을 제공하지 않는다면 그 클래스의 클라이언트는 기반 클래스를 작성한 사람의 의도와 다른 방식으로 메서드를 오버라이드할 위험이 있다. 모든 하위 .. 2022. 7. 22. [Kotlin IN ACTION] - Kotlin Interface(인터페이스) 코틀린 인터페이스 코틀린 인터페이스는 자바 8 인터페이스와 비슷하다. 코틀린 인터페이스는 안에는 추상 메서드뿐 아니라 구현이 있는 메서드도 정의할 수 있다. 다만, 인터페이스에는 아무런 상태(field)도 들어갈 수 없다. // click 이라는 추상 메서드가 있는 인터페이스 정의 interface Clickable { fun click() } 이 인터페이스를 구현하는 모든 비추상 클래스(또는 구체적 클래스)는 click 에 대한 구현을 제공해야 한다. // 인터페이스 file interface Clickable { fun click() } // 구체적 클래스 file class Button : Clickable { override fun click() = println("I was clicked") }.. 2022. 7. 22. [Kotlin IN ACTION] - Kotlin 로컬 함수와 확장 많은 개발자들이 좋은 코드의 중요한 특징 중 하나가 중복이 없는 것이라고 믿는다. 그래서 많은 경우 메소드 추출 리팩토링을 적용해서 긴 메소드를 부분부분 나눠서 각 부분을 재활용 한다 하지만 그렇게 코드를 리팩토링하면 클래스 안에 작은 메소드가 많아지고, 각 메소드 사이의 관계를 파악하기 힘들어서 코드를 이해하기가 더 어려워질 수 있다. 또한 이 부분을 해결하고자, 추출한 메소드를 별도의 내부 클래스 안에 넣으면 코드가 깔끔하게 조직할 수는 있지만, 그에 따른 불필요한 준비 코드가 늘어난다. 코틀린에서는 더 깔끔한 해법이 존재한다. 코틀린에서는 함수에서 추출한 함수를 원 함수 내부에 중첩 시킬 수 있다. 코드 중복을 보여주는 예제 class User(val id : Int, val name : Strin.. 2022. 7. 21. [Kotlin IN ACTION] - Kotlin 문자열 다루기(split) 자바 개발자라면 String의 split 을 잘 알 것이다. 자바의 split 메소드는 점(.)을 사용해서 문자열 분리를 할 수가 없다. 그 이유는 split의 구분 문자열은 실제로는 정규식이기 때문이다. 따라서 마침표(.)는 모든 문자를 나타내는 정규식으로 해석된다. // Java String s = "12.345-6.A"; String[] sArr = s.split("."); for (String str : sArr) { System.out.print(str + ", "); } // 결과는 빈 배열을 반환한다. // Kotlin val str : String = "12.345-6.A" println(str.split("\\.|-".toRegex())) Kotlin 은 명시적으로 toRegex 확장함수.. 2022. 7. 21. [Kotlin IN ACTION] - Kotlin 컬렉션 처리 컬렉션을 처리할 때 쓸 수 있는 코틀린 표준 라이브러리 함수 몇 가지를 설명하겠다. vararg 키워드를 사용하면 호출 시, 인자 개수가 달라질 수 있는 함수를 정의할 수 있다. 중위 함수 호출 구문을 사용하면 인자가 하나뿐인 메소드를 간편하게 호출할 수 있다. 구조 분해 선언을 사용하면 복합적인 값을 분해해서 여러 변수에 나눠 담을 수 있다. 자바 컬렉션 API 확장 코틀린 컬렉션은 자바와 같은 라이브러리 클래스를 사용하는 걸로 알고 있을 것이다. 그런데 코틀린 컬렉션은 어찌 더 확장된 API를 사용할수 있을까? ex) .last(), .maxOrNull() 그 이유는 확장함수이다. 코틀린은 확장함수가 있어 사용할 수 있고, 따라서 자바 라이브러리 클래스의 인스턴스인 컬렉션에 코틀린이 새로운 기능을 추.. 2022. 7. 21. 이전 1 ··· 14 15 16 17 18 19 20 ··· 40 다음