전체 글

Never stop acting like the new one on the team
Android/Development Tips

Clean Architecture (무비 앱)

몇몇 샘플을 보고 참고하여 간단하게, 영화 검색/추천 앱을 개발하였다. 아직 이해하지 못한 부분이 많아서 앞으로도 쭉 고칠예정 (리뷰나 코멘트도 부탁드립니다) 보일러 플레이트의 양은 늘지만, 확실히 관심사가 분리되는 것이 현업에 적용해보고싶은 욕심이든다. 코드 저장소

Algorithm

2020 Dev-Matching: 웹 백엔드 개발자 후기

https://programmers.co.kr/competitions/144/2020-web-be-first 2020 Dev-Matching: 웹 백엔드 개발자(상반기) 접수 20년 03월 30일 12:00 ~ 04월 17일 18:00 진행 20년 04월 18일 13:00 ~ 04월 18일 15:00 programmers.co.kr 웹 개발은 하지 않지만, 꽤나 괜찮은 회사들이 많이 나온 챌린지에 어떤 알고리즘 문제들이 나오는지 궁금하여 잠시 시간을 내어 풀어봤다. 시간은 1시 ~ 3시 2시간이 주어지고 4문제가 나왔다. 문제에 대한 디테일한 내용은 프로그래머스의 회사 자산이기 때문에 적을 수는 없을 것 같다. 1번 문제는 환형큐에 대한 문제를 풀어봤으면 생각없이 풀어나갈 수 있는 정도로 나왔고, 10분..

Algorithm

알고리즘 - 주식 가격 (스택/큐)

https://programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr public class Programmers2 { public static void main(String[] args) { System.out.println(Arrays.toString(solution(new int[]{1, 2, 3, 2, 3}))); } static public int[] solution(int[] prices) { int[] answer = new int[prices.length]; fo..

Algorithm

카카오 테스트 크레인 인형뽑기 게임

https://programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr public class Programmer { public static void main(String[] args) { int[][] input = {{0, 0, 0, 0, 0}, {0, 0, 1, 0, 3}, {0, 2, 5, 0, 1}, {4, 2, 4, 4, 2}, {3, 5, 1, 3, 1}}; int[] move = {1, 5, 3, 5, 1, 2, 1, 4}; System.out.print(solu..

Kotlin & Java

사례로 알아보는 Generic(제네릭)

Generic 이란 무엇일까 ? 혹시 아래 코드들이 어떤식으로 다른지 정확하게 이해하고 있나요 ? 아니라면 이번시간에 차근차근 알아보도록 합시다 public class Generics { // T == type parameter private T t; T method(T t) { return null; } // T 를 반환하는 메서드 레벨의 type parameter static void method1(P t) { } // Generics와 상관없는 메서드 레벨의 type parameter (Parameter 를 받을 때 P 타입을 유추하기 때문에 사용가능) static E method2(P p) { return null; } // E 타입 P 타입을 받아 E 로 반환. 메서드 레벨의 type param..

Code Paradigm

코틀린으로 작성하는 Double Dispatch(더블 디스패치)

해당 글은 토비의 봄 TV를 보고 정리한 것입니다. 먼저 더블 디스패치를 알기전에 디스패치에 대해 간략하게 알아보면, "어플리케이션이 어떤 메소드를 호출할 것인지 결정하고 실행하는 과정"을 의미한다 그리고 디스패치에는 크게 두가지로 나눠집니다 정적인 디스패치(Static Dispatch) 와 동적인 디스패치(Dynamic Dispatch) 정적인 디스패치는 컴파일타임에 어떤 메소드가 호출될지 이미 정해지고, 동적인 디스패치는 런타임에서 어떤 메소드가 호출될지 결정된다. 정적인 디스패치 e.g) 아래 코드는 반환 타입(Unit)도 같고, 함수명(run)도 같지만, 파라미터가 달라 이미 컴파일 시점에서 다른 함수 취급을 받게된다. 즉 실행되기전에 이미 어떤 함수가 호출될지 결정이 되어 있는 상황이다. cla..

Kotlin & Java

람다식, 익명 함수, 일급 함수, 클로저 간단하게 알아보자

프로그래밍 스펙의 람다 람다식? 익명 함수? 람다식, 람다 함수는 프로그래밍 언어에서 사용되는 용어로, 익명 함수를 지칭한다. 고로 람다 함수는 익명 함수와 같은 의미를 지닌다 라고 생각해도 될 것 같다. 물론 람다가 더 큰 표현이고, 람다의 특징 중 람다 식은 이름을 가질 필요가 없다(익명 함수) 또한 커링 같은 특징들도 있는데, 찾아보면 좋을 것 같다. 일급 함수 ? 함수를 우리가 사용하는 객체 처럼 사용할 수 있다면 일급 함수라고 부른다. 1. 함수를 변수에 할당 할 수 있어야하고 2. 인자에 담을 수 있어야 하고 3. 반환 형으로 사용할 수 있어야 한다. 함수의 시그니처 어디에든 함수가 들어갈 수 있다. public String(함수로 표현 가능) getString(String[](함수로 표현 가..

Kotlin & Java

인터페이스의 정적(static) 메서드와 기본(default) 메서드

자바 8 이전에는 인터페이스의 모든 메서드가 추상 메서드이어야 했다. 구현부가 없어야 했다. 하지만 자바 8에서부터는 구현이 있는 정적 메서드, 기본 메서드를 추가할 수 있다. 정적 메서드 이전 관점에서는 인터페이스를 추상적인 의미를 가진다고 생각했고, 그렇기 때문에 구현을 하는 방식은 디자인 관점에서 맞지 않았지만, 이런 사고가 다양한 개발을 거치면서 진화했다. 특히 그 중에서도 팩터리 메서드는 인터페이스와 아주 궁합이 좋다. e.g IntSequence 인터페이스에는 다음과 같이 주어진 정수의 숫자 시퀀스를 만들어내는 정적 메서드 digitsOf() 를 추가할 수 있다 이 메서드는 IntSequence 인터페이스를 구현한 클래스 중에서 수많은 인스턴트들이 전달 되지만, 어느 클래스의 인스턴스인지 신경..

Kotlin & Java

타입 변환과 instanceof 연산자 Tips

public class FileSequence implements IntSequence, Closeable { // something... } 위와 같이구현하면 FileSequence 클래스는 IntSequence 와 Closeable 을 슈퍼타입으로 둔다. (객체를 두 인터페이스 타입 중 어느 것으로도 변경할 수 있다는 말이다. 아주 활용도가 높다.) Tips. 변수를 인터페이스 타입으로 선언할 수 있지만, 타입이 인터페이스 자체인 객체는 만들 수 없다. 모든 객체는 클래스의 인스턴스여야 한다. -> FileSequence 클래스의 인스턴스를 만들어 IntSequence, Closeable 처럼 사용할 수 있지만, IntSequence 클래스의 인스턴스를 만들 수는 없다. 또한 객체는 실제 자신의 클래..

Nanamare
TEAM > SELF