[JAVA] StringBuilder와 StringBuffer의 차이점
·
프로그래밍 언어/Java 기초
알고리즘 문제를 풀다가 String으로는 시간이 너무 오래 걸려, StringBuilder와 StringBuffer를 골라 사용해야 하는 경우가 있었다.문득 그 두 클래스의 차이가 궁금해졌다.  StringBuilder와 StringBuffer는 둘 다 문자열을 변경 가능하게 다룰 수 있는 Java 클래스이다.이 둘의 기본적인 용도와 동작은 유사하지만 다음과 같은 몇 가지 차이가 있다. 동기화(Synchronization)StringBuilder동기화되지 않음 (Non-synchronized).따라서, 멀티스레드 환경에서 안전하지 않을 수 있지만, 단일 스레드 환경에서 StringBuffer보다 더 빠름.StringBuffer동기화됨 (Synchronized)멀티스레드 환경에서 여러 스레드가 안전하게 사..
[프로그래머스/Kotlin]Level3 - 양과 늑대
·
프로그래밍 언어/Kotlin 기초
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 문제 설명 2진 트리 모양 초원의 각 노드에 늑대와 양이 한 마리씩 놓여 있습니다. 이 초원의 루트 노드에서 출발하여 각 노드를 돌아다니며 양을 모으려 합니다. 각 노드를 방문할 때 마다 해당 노드에 있던 양과 늑대가 당신을 따라오게 됩니다. 이때, 늑대는 양을 잡아먹을 기회를 노리고 있으며, 당신이 모은 양의 수보다 늑대의 수가 같거나 더 많아지면 바로 모든 양을 잡아먹어 버립니다. 당신은 중간에 양이 늑대에게 잡아먹히지 않도록 하면서 최대한 많은 수의 양을 모아서 다시 루트 노드로 돌아오려 합니다. ..
[Java/Kotlin]Iterator
·
프로그래밍 언어/Java 기초
Iterator 인터페이스는 컬렉션의 요소를 순회하고 선택적으로 요소를 제거할 수 있는 메소드를 정의하는 자바의 인터페이스입니다. 이 인터페이스는 자바 컬렉션 프레임워크의 일부로 제공되며, 다양한 자료 구조를 효율적으로 순회하고 조작하는 데 사용됩니다. Iterator 인터페이스는 hasNext(), next(), remove() 세 가지 메소드를 정의합니다. hasNext(): 이 메소드는 다음 요소가 있으면 true를 반환하고, 없으면 false를 반환합니다. next(): 이 메소드는 다음 요소를 반환합니다. remove(): 이 메소드는 마지막으로 반환된 요소를 제거합니다. next()를 호출한 후에만 호출 가능합니다. Iterator 인터페이스는 자바의 ArrayList, LinkedList, ..
[Kotlin]Typealias VS Inline Class
·
프로그래밍 언어/Kotlin 기초
1. typealias 변수들에 대한 새로운 별명을 지어주고, 짧게 사용 가능 typealias를 클래스 혹은 함수 내에서 정의하는 것은 불가능하다 typealias는 누구나 접근할 수 있는 Top Level 변수이다 동일한 type을 여러 개의 이름*으로 사용할 수 있다. ex1-1. typealias NodeSet = Set ex1-2. typealias FileTable = MutableMap ex2-1. typealias MyHandler = (Int, String, Any) > Uit ex2-3. typealias Predicate = (T) -> Boolean PermissionDialog 클래스를 PermissionDialogCallback으로 정의 (PermissionDialog) -> U..
[Kotlin]Deligation
·
프로그래밍 언어/Kotlin 기초
Deligation Pattern 참고링크 Deligation Pattern(위임 패턴)이란, 객체가 상송과 동일하게 코드 재사용을 할 수 있도록하는 객체지향 디자인 패턴이다. 예제소스 (kotlin) class Rectangle (val width: Int, val height: Int) { fun area() = width * height } class Window (val bounds: Rectangle) { // Deligation fun aread() = bounds.area() } 코틀린에서는 Deligation에 대한 특별한 기능이 내장되어 있어 다음과 같이 작성할 수 있다. interface ClosedShape { fun area() : Int } class Rectangle (val w..
[Kotlin]tailrec(꼬리재귀)
·
프로그래밍 언어/Kotlin 기초
tailrec이란? tailrec은 꼬리재귀(tail recursive)라는 의미로, 추가적인 연산이 없이 자신 스스로 재귀적으로 호출하다가 어떤 값을 리턴하는 함수를 의미 자신만 반복적으로 호출하는 재귀함수(tailrec)는 while과 같이 루프를 사용하는 코드로 변환이 가능함. 재귀함수가 호출되면서 소비되는 스택을 아낄 수 있음 (스택이 각 중간 재귀 상태를 추적할 필요가 없음) 루프는 동일한 결과를 출력하면서 재귀함수보다 더 적은 자원을 사용 재귀함수와 꼬리재귀 팩토리얼을 재귀함수로 구현해보자! fun factorial(n: Int): Int { return when (n) { 1 -> n else -> n * factorial(n-1) // 재귀 호출 } } 재귀함수를 꼬리재귀로 작성해보자! t..
[Kotlin공부]코틀린문법정리 : 07 설계도구
·
프로그래밍 언어/Kotlin 기초
7.1 설계도구 객체지향 프로그래밍은 구현과 설계로 구분함 ⊙ 패키지 클래스와 소스 파일을 관리하기 위한 디렉터리 구조의 저장 공간 디렉터리가 계층 구조로 만들어져 있으면 온점(.)으로 구분해서 각 디렉터리를 모두 나열해줌 package 메인 디렉터리.서브 디렉터리 class 클래스 { } ⊙ 추상화 메서드 이름으로 나열했을 때, 명확한 코드는 설계 단계에서 메서드 블록 안에 직접 코드를 작성 명확하지 않은 경우는 구현 단계에서 코드를 작성하도록 메서드의 이름만 작성 => 추상화(abstract) Activity가 상속받는 클래스 중 최상위 클래스 : Context => abstract로 설계되어 있음 abstract class Animal { fun walk() { println("걷습니다.") } a..
[Kotlin공부]코틀린문법정리 : 06 클래스
·
프로그래밍 언어/Kotlin 기초
6.1 클래스와 설계 그룹화할 수 있는 함수와 변수를 한군데 모아놓고 사용하기 쉽게 이름을 붙여놓은 것 class 클래스명 { var 변수 fun 함수() { // 코드 } } class Log { var status: Intcompanion objext { static fun d(tag: String, msg: String) { // 문자열을 출력하는 코드 } static fun e(tag: String, msg: String) { // 문자열을 출력하는 코드 } } } 6.2 클래스의 생성 함수 형태로 제공되는 생성자를 호출해야지만 클래스 실행 class Kotlin { init { // 생성자가 없으면 아무것도 없는 init 블록이 실행되는 것과 같음 } } ⊙ 프라이머리 생성자 class Kotl..
[Kotlin공부]코틀린문법정리 : 05 함수
·
프로그래밍 언어/Kotlin 기초
5.1 함수의 정의 함수는 fun 키워드로 정의, 값을 입력받아 사용 입력될 값을 기술한 것을 파라미터(Parameter)라 부름 fun 함수명(파라미터 이름 : 타입): 반환타입 { return 값 } ⊙ 반환값과 입력값이 있는 함수의 정의 fun square(x: Int): Int { return x * x } ⊙ 반환값과 입력값이 있는 함수의 정의 fun printSum(x:Int, y:Int) { println("x+y=${x+y}") } ⊙ 입력값 없이 반환값만 있는 함수의 정의 fun getPi(): Double { return 3.14 } 5.2 함수의 사용 함수의 사용은 이름 뒤에 괄호를 붙여 명령어를 실행하는 형태 => 함수명(값) fun 함수명(파라미터 이름 : 타입): 반환타입 { r..
[Kotlin공부]코틀린문법정리 : 04 반복문
·
프로그래밍 언어/Kotlin 기초
4.1 for 반복문 for : 특정 횟수만큼 코드를 반복하기 위해 사용 ⊙ for 다음의 괄호 () 안에 반복할 범위를 지정하면 for 블로의 코드들이 지정한 횟수만큼 반복해서 동작 for (반복할 범위) { // 실행 코드 } ⊙ for in ..(온점 2개) : 일반적인 형태의 for 반복문 시작값과 종료값으로 지정한 숫자 범위만큼 코드를 반복하는 일반적인 방법 for (변수 in 시작값..종료값) { // 실행 코드 } for (index in 1..10) { println("현재 숫자는 " + index) } *** 출력 결과 *** 현재 숫자는 1 현재 숫자는 2 현재 숫자는 3 현재 숫자는 4 현재 숫자는 5 현재 숫자는 6 현재 숫자는 7 현재 숫자는 8 현재 숫자는 9 현재 숫자는 10 ..
[Kotlin공부]코틀린문법정리 : 03 배열과 컬렉션
·
프로그래밍 언어/Kotlin 기초
3.1 배열 여러 개의 값을 담을 수 있는 대표적인 자료형 값을 담기 전에 먼저 배열 공간의 개수를 할당하거나 초기화 시에 데이터를 저장해두면 데이터의 개수만큼 배열의 크기가 결정됨 먼저 개수를 정해놓고 사용해야 하며 중간에 개수를 추가하거나 제거할 수 없음 선언형태 var 변수 = Array(개수) var students = IntArray(10) var longArray = LongArray(10) var CharArray = CharArray(10) var FloatArray = FloatArray(10) var DoubleArray = DoubleArray(10) 문자 배열에 빈 공간 할당하기 String은 기본 타입이 아니기 때문에 StringArray는 없지만 아래와 같이 사용 가능 var s..
[Kotlin공부]코틀린 문법 정리 : 02 조건문
·
프로그래밍 언어/Kotlin 기초
2.1 조건문 if var myNumbers = "1,2,3,4,5,6" var thisWeekNumbers = "5,6,7,8,9,10" if (myNumbers == thisWeekNumbers) println("Lotto" + " 당첨되었습니다.") else println("당첨 X") if문을 사용하기 위한 조건 1. 비교 연산자 : ==, 2. 논리 연산자 : &&, || -> 조건식 결과는 Boolean 타입인 true와 false로 나타남 var a = 30 var b = 19 var bigger = a > b println("비교 연산자 a는 b보다 큽니다.: $bigger") // $뒤에 변수명 넣으면 출력됨 // println("비교 연산자 a는 b보다 큽니다.: " + bigger) ..
[Kotlin공부]코틀린 문법 정리 : 01 변수 선언하기
·
프로그래밍 언어/Kotlin 기초
fun main(변수명: 타입) public int solution(String s) fun solution(s: String) 코틀린 변수 (val, var) val name = “hong” ☞ 불변변수 var subject: String = “music” ☞ 가변변수 // 초기화 val grade: Int grade = 1
뿌꾸 빵
'프로그래밍 언어' 카테고리의 글 목록