본문 바로가기

Languages

(46)
[Kotlin] 코틀린 기초 코틀린은 타입 선언을 생략해도 되고, 변경 가능한 데이터보다 변경할 수 없은 불변 데이터 사용을 장려한다. 간단한 코틀린의 특징을 알아보자. fun main(args: Array){ println("Hello world!") } 함수를 선언할 때 fun 키워드를 사용한다. 파라미터 이름 뒤에 그 파라미터의 타입을 쓴다. 함수를 최상위 수준에 정의할 수 있다. 자바와 달리 꼭 클래스 안에 함수를 넣어야 할 필요가 없다. 배열도 일반적인 클래스와 마찬가지다. 코틀린에는 자바와 달리 배열 처리를 위한 문법이 따로 존재하지 않는다. cf) 코틀린에서는 배열도 일반적인 클래스와 유사한 방식으로 다루어진다. 코틀린에서 배열은 Array 클래스의 인스턴스로 표현되며, 특별한 키워드 없이도 배열을 생성하고 사용할 수 ..
[Kotlin] 1장. 코틀린이란 무엇이며, 왜 필요한가? 코틀린? 자바 플랫폼에서 돌아가는 새로운 프로그래밍 언어 간결 & 실용적 자바 코드와의 상호운용성을 중시 ( 현재 자바가 사용 중인 곳이라면 거의 대부분 코틀린 활용 가능 ) 기존 자바 라이브러리나 프레임워크와 함께 잘 작동하며, 성능도 자바와 같은 수준이다. 간단한 코틀린 예시를 보자 예시 data class Person(val name:String, // 데이터 클래스 val age:Int?=null) // 널이 될 수 있는 타입(int?)과 파라미터 디폴트 값 fun main(args : Array) { //최상위 함수 val persons = listOf(Person("영희"), Person("철수",age=29)) // 이름 붙인 파라미터 val oldest = persons.maxBy{it.a..
[JAVA] String VS StringBuilder VS StringBuffer String VS StringBuilder/StringBuffer String과 StringBuilder/StringBuffer 클래스의 가장 큰 차이점은 String은 불변의 속성을 가진다는 점이다. String은 .concat(값) or +"값"을 사용할 수 있다. 하지만 String은 불변하기 때문에 값을 변경할 수 없어 기존 String에 들어있던 값을 버리고 새로 값을 할당하는 것이다. 그렇기 때문에 concat , +를 사용할 때 속도가 느려진다. StringBuilder, StringBuffer는 String과 문자열을 더할 때 객체를 생성하는 것이 아니라 기존의 데이터에 더하는 방식을 사용하기 때문에 속도도 빠르며 상대적으로 부하가 적다. 그렇다면 StringBuilder와 StringBu..
[Python] 이분 탐색 [이분탐색 개념] 정렬되어 있는 배열에서 데이터를 찾을때, 처음부터 끝까지 데이터를 탐색하는 순차 탐색과는 달리 데이터를 절반으로 줄여가며 탐색하는 알고리즘이다. 예를들어, 책에서 127p를 찾을려고 할때 먼저 책의 아무 페이지나 펼친다. 만약 100p를 펼쳤다고 하면 이제 100p 이후에서 원하는 페이지를 찾는다. 이렇게 특정 값의 왼쪽과 오른쪽 중에 한 곳을 탐색하는 방법이 이분탐색이다. 보통 특정 값은 배열의 중간에 위치한 값을 사용한다. [코드] def binary_search(a,x): start = 0 end = len(a) -1 while start x : end = mid - 1 else: start = mid + 1 d = [1,2,4,6,8,13,35,60] print(binary_se..
[Python] 트리 트리는 계층적인 구조를 표현할 때 사용할 수 있는 자료구조다. 정점(node)와 간선(edge)를 이용하여 데이터의 배치 형태를 추상화한다. [트리의 용어] 루트노드(root node) : 부모가 없는 최상위 노드 단말노드(leaf node) : 자식이 없는 노드 크기(size) : 트리에 포함된 모든 노드의 개수 깊이(depth) : 루트 노드부터의 거리 높이(height) : 깊이 중 최댓값 차수(degree) : 각 노드의 (자식 방향) 간선 개수 기본적으로 트리의 크기가 N일때, 전체 간선의 개수는 N-1개 이다. [이진 탐색 트리] 이진 탐색이 동작할 수 있도록 고안된 효율적인 탐색이 가능한 자료구조의 일종이다. 왼쪽 자식 노드 < 부모 노드 < 오른쪽 자식 노드 를 만족시킨다. [트리의 순회]..
[python] 투 포인터(Two Pointers) 알고리즘 코딩테스트를 풀다보면 투 포인터로 풀어야하는 문제들을 자주 볼 수 있습니다. 오늘은 투 포인터 알고리즘에 대해 알아봅시다. [투 포인터(Two Pointers) 알고리즘] 리스트에 순차적으로 접근해야 할 때 두개의 점의 위치를 기록하면서 처리하는 알고리즘 리스트에 담긴 데이터에 순차적으로 접근해야 할 때는 시작점과 끝점 2개의 점으로 접근할 데이터의 범위를 표현할 수 있다. 위 그림과같이 두 개의 포인터(점)의 위치를 기록하면서 처리한다. [시간복잡도] O(N) 매 루프마다 항상 두 포인터 중 하나는 1씩 증가하고 각 포인터가 n번 누적 증가해야 알고리즘이 끝난다. 각각 배열 끝에 다다르는데 O(N)이라 둘을 합해도 여전히 O(N)이다. [예제] 백준 3237 두 수의 합이 투 포인터의 예제입니다. ht..
[JAVA] Thread 사용해보기 - Thread / Runnable 예제 오늘은 스레드의 개념과 자바에서의 스레드 사용법을 알아봅시다! 스레드는 프로세스 내에서 실행되는 흐름의 단위를 말합니다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있습니다. 자바에서의 스레드는 main()안의 실행문들이 하나의 스레드입니다. main()이외의 스레드를 만들려면 Thread 클래스를 상속하거나 Runnable 인터페이스를 구현해야합니다. 두 방법을 모두 알아봅시다! 1. Thread 클래스 상속 DownloadThread.java package test.mypac; /* * 새로운 스레드 만드는 방법 * * 1. Thread 클래스를 상속 받은 클래스를 정의한다. * 2. run() 메소드를 오버라이드한다. * 3...
[JAVA] JFrame 사용해보기 #2 - DB 연동 (DTO, DAO) 저번시간에 JFrame의 기초를 알아보았습니다. 이번시간에는 JFram에 Dao, Dto를 사용해서 DB와 연동을 해봅시다. 저번 게시글 링크 -> [JAVA] JFrame 사용해보기 #1 - 예제로 다양한 기능 알아보기 [JAVA] JFrame 사용해보기 #1 - 예제로 다양한 기능 알아보기 오늘은 JFrame 사용해봅시다. 다양한 예제를 보면서 기능을 알아가봅시다. 자바에서 JFrame은 GUI를 제공해줍니다. 이렇게 창안에서 자기가 원하는 다양한 기능들을 만들 수 있습니다. JFrame의 3가지 e-you.tistory.com Dto와 Dao의 자세한 설명과 예제는 여기를 참고해주세요! [JAVA] DTO vs DAO vs VO 개념 정리 [JAVA] JDBC 사용해보기 #3 - DTO, DAO와 ..