1. Lamba 람다표현식은 우리가 마치 value 처럼 다룰 수 있는 익명 함수이다. 1) 메소드의 파라미터로 넘겨줄 수 있다. fun maxBy(a : Int) 2) return 값으로 사용할 수 있다. 3) 메소드를 표현하는, 함수의 다른 표현방식이다. 리턴을 써도 되고 안써도 되는데, 람다 표현식을 쓸때는 리턴을 생략하는 경우가 많다. 람다의 기본정의 val, var lamdaName : Type = {argumentList(a : Int) -> codeBody (어떻게 할건지.. 코드작성부분)} 왼쪽의(Int) -> Int 나 number:Int 를 써줘야 타입추론 가능 람다에서는 마지막에 있는 코드줄이 리턴 값이다. (String,Int) -> String 타입추론 예시 (출처: https:/..
스티커 메모 개수가 너무 늘어나서 여기에 옮겨 적음 최단 경로 알고리즘 가장 짧은 경로를 찾는 알고리즘 한 지점에서 다른 한 지점까지의 최단 경로 한 지점에서 다른 모든 지점까지의 최단 경로 모든 지점에서 다른 모든 지점까지의 최단 경로 각 지점은 그래프에서 노드로 표현 지점 간 연결된 도로는 그래프에서 간선으로 표현 다익스트라 최단 경로 알고리즘 특정한 노드에서 출발하여 다른 모든 노드로 가는 최단 경로 계산 음의 간선이 없을 때 정상적으로 동작 (현실 세계의 도로는 음의 간선으로 표현 X) 다익스트라 알고리즘은 그리드 알고리즘으로 분류 매 상황에서 가장 비용이 적은 노드를 선택해 반복 1 출발 노드를 설정 2 최단 거리 테이블 초기화 3 방문하지 않은 노드 중에서 최단 거리가 가장 짧은 노드를 선택 ..
Git working directory -> staging area -> git directory git directory 에 있는 파일은 checkout을 통해 working directory로 돌릴 수 있다. untracked 와 tracked 깃이 tracking 하고 있는 파일 중에 unmodified 와 modified로 나눌 수 있으며 modified 만 staging area로 넘길 수 있음 git add -> staging area 로 옮긴다 (커밋 할 준비가 되어 있음) git add *.txt -> txt 로 된 모든 파일 git rm --cached -> staging area -> working directory 옮기는 명령어 staging area 에 a 파일 이 있는 와중 wor..
카카오 Rest Api Keyword 관련 검색 시 파라미터로 받는 X값이 longitude / Y값이 Latitude 로 되어 있다. Android Location Manager를 이용해서 현재위치의 longitude 값과 Latitude 값을 변수에 저장을 하고, 형 변환을 하여 파라미터로 넘겨 주었는데, 현재 위치에 대한 마크가 나타나지 않았던 문제가 발생 해서 이유를 찾아보았다. 현재 위치에 대해서 맵을 이동할 때 사용했던 메소드는 카카오 지도 Android Api Document에 있는 mapPointWithGeoCoord를 이용하고 해당 객체를 카카오 맵에 setMapCenterPoint 와 마커를 이용해 현재 위치를 표시해주었는데 mapPointWithGeoCoord 메소드를 살펴보니 Kak..
Android App 개발 도중, 개인 레포지토리에서 브랜치를 만들어 작업하고, merge 했을 때,. idea에 있는 misc.xml, runConfiguration.xml 파일이 변경되어 merge Error가 발생해서 궁금증이 생겨 찾아보고 정리하게 되었다. (. gitignore 추가라고 적힌 파일들은 git에 보관되면 안 되는 파일들.) assetWizardSettings.xml - (. gitignore 추가) 이 파일은 Android Studio Wizard로 추가된 마지막 아이콘을 저장합니다. VCS에서 안전하게 제거 할 수 있습니다. (Vector Asset에 마지막으로 추가한 아이콘의 정보를 저장) caches - (.gitignore 추가) 폴더 그대로의 의미로 데이터 값을 미리 복사..
1. 함수 자바의 경우 앞에 리턴형을 써준다 void/ int 코틀린의 경우 변수명 뒤에 타입을 지정 아무것도 리턴형식이 없을 때 뒤에 Unit을 써준다. Void와 같은 의미 (리턴 타입이 없으면 안 써줘도 상관 없음) fun add(a: Int, b: Int) : Int { //자바와 다른점 앞 i가 대문자, 리턴 타입이 있을 경우 생략 하면 안됨 return a+b } 2. val vs var val = value (상수 변하지 않는 수) 한번 정의 되면 재정의 될 수 없음 단, 바로 할당하지 않을 경우 val e, var e 같은 형식의 선언은 사용될 수 없음 val e: String, Int 같이 선언 후 넘어가야한다. val c = 100 //이와 같은 경우 코틀린은 C 가 Int인 줄 알기 ..
Constraint Layout 을 설명하기 이전에 일단 Layout 이란 무엇인가? Layout 은 View를 담는 그릇 같은 것으로 생각하면 된다. Layout 들은 (Linear, Relative Frame ...) View Group을 상속 하고 있으며, View 는 화면을 구성하는 (Text View, Image View, Button, Recycler View ...) 각각의 컴포넌트들이다. Linear Layout 을 사용하여 View를 구성할 때, 수직과 수평방향을 만들고 싶을 때, Layout 2개를 만들고, Orietation: vertical, horizontal 을 사용하여 만들게 되는데 이러한 방식을 사용하면 퍼포먼스에 문제가 생기기 때문에 가급적 사용하지 않는편이 더 낫다. 그래..
백준에서 가져온 문제이다. 사람마다 인출 시간이 다르기 때문에 인출 시간이 제일 긴 사람이 첫 번째로 줄을 선다면 전체 총 합이 커지기 때문에 오름 차순으로 정렬하는 것을 1순위로 생각했다. 오름차순 정렬 후 계산을 하면 홈페이지 문제 예시를 예로 들어 5명의 사람이 각각 1 2 3 3 4 분의 인출 시간을 가지고 있으며, 단순 계산식으로 표현하면 1 1+2 1+2+3 1+2+3+3 1+2+3+3+4 형태로 표현할 수 있다. 각 사람마다 앞에 사람의 인출하는데 걸리는 시간만큼 더 추가로 걸리기 때문이다. 간단하게 표현하자면 1*5 + 2*4 + 3*3 + 3*2 +4 N*인출시간 + (N-1)*다음 사람의 인출시간 ..... 이처럼 표현 가능하기에 이렇게 구현하였다.
