전체 글 211

[Kotlin] when

코틀린에는 when이라는 함수가 있다. 이번에는 when에 대해서 알아보자. When이란? java의 switch라고 생각하면 된다. Java는 아래와 같다 switch(값){ case Case1: 실행할 내용; break; case Case2: 실행할 내용; break; case Case3: 실행할 내용; break; default: 실행할 내용; break; } 이것을 Kotlin의 when으로 바꿔보자. when(값){ Case1 -> 실행할 내용 Case2 -> 실행할 내용 Case3 -> 실행할 내용 else -> 실행할 내용 } 조금 더 깔끔하다. 값과 Case를 비교하고 같으면 -> 이후의 내용을 실행한다. when의 else는 Switch의 default와 같다고 생각하면 된다. 위의 Ca..

[Kotlin] 변수 선언

변수선언 코틀린에서 변수를 선언하기 위해서는 var 키워드를 사용한다. var hello: String = "Hello" 이러한 방식으로 hello라는 변수에 "Hello"라는 값을 넣어준 것이다. 이전 글을 보면 알겠지만, 코틀린은 자료형 추론이라는 것이 가능하다. 그렇기 때문에 위의 문장을 아래와 같이 써도 전혀 문제 없다 var hello = "Hello" 어차피 자료형은 추론을 해주거든. 아 당연히 나머지 자료형들도 마찬가지다. 이처럼 변수를 선언하고 사용하기 위해서는 var 변수이름 (: 자료형) = 내용 위와 같은 형식을 지켜야 한다. 이렇게 선언한 문장의 경우 선언 후 값을 수정해주어도 문제가 없다. var hello: String = "Hello" hello = "Hello Kotlin!"..

[Kotlin] 자료형

⚠️ 내맘대로 작성한 코드이기 때문에 비합리적 진행과 근거없는 추론이 있을 수 있습니다!⚠️ 자료형 정수 Byte, Short, Int, Long이 있고, 부호가 없는 정수자료형은 앞에 U붙이면 된다. 총 8개 존재. 코틀린은 자료형의 추론이 가능하다. 그래서 자료형을 지정해주지 않고 번수를 선언해도 알아서 자료형을 추론해준다. 정수의 경우에는 Int로 추론이 되기 때문에 Short나 Byte를 쓸거면 자료형을 지정해줘야 한다. 실수 Float와 Double이 있다. 논리 Boolean => true or false 문자 및 문자열 문자는 Char, 문자열을 String이다. 문자는 작은따옴표(')로 표현, 문자열은 큰 따옴표(")로 표현한다.

[Meta-huristics] Simulated Annealing : 담금질 기법

⚠️ 내맘대로 작성한 글이기 때문에 비합리적 진행과 근거없는 추론이 있을 수 있습니다!⚠️ 저번 글에 작성했던 알고리즘인 Grid는 최적의 답을 구할 수는 없다. 그저 근사치를 구할 수 있을 뿐이다. 그렇기 때문에 최적해를 구할 수 있는 방법을 소개하고자 한다. Grid알고리즘의 경우 내 블로그에 적어뒀지만 여기에 한번 더 링크를 남겨둘테니 헷갈린다면 한번 더 보는걸 추천한다. https://naemamdaelo.tistory.com/47 form it -> cool it -> REPEAT 이 것을 적용시킨 알고리즘을 Simulated Annealing이라고 한다. 우리는 어떠한 값을 구할때 Global Optimum을 구하고자 한다. 하지만, 최적해로 가는 과정에는 Local Optimum이 존재한다...

카테고리 없음 2022.12.25

Routing Problems : 최단경로 찾기

⚠️ 내맘대로 작성한 코드이기 때문에 비합리적 진행과 근거없는 추론이 있을 수 있습니다!⚠️ Traveling Salesperson Problem(TSP) / 외판원 문제 외판원이 여러 지역을 돌아다닌다. 출발지는 존재하고, 모든 도시 한번씩은 반드시 방문해야 한다. 하지만, 한번 간 도시는 재방문할 수 없고, 출발지로 돌아와야한다. => 최적경로 찾기 문제 ex) A B C D A-B : 10 A-C : 35 A-C : 30 B-C : 30 B-D : 15 C-D : 30 A Simple TSP 1단계 : 모든 경로를 List Up 2단계 : 그 중 최소 경로 선택 모든경로 결과값 ABCDA : 100 ABDCA : 90 -> shortest! ACBDA : 110 ACDBA : 90 -> shorte..

Algorithm 2022.12.22

알고리즘 - 그리디(Greedy)

⚠️ 내맘대로 작성한 글이기 때문에 비합리적 진행과 근거없는 추론이 있을 수 있습니다!⚠️ 1. 그리디(Greedy)란? 그리디 알고리즘이란 "탐욕법"이라고도 부른다. 이 알고리즘은 "현재 상황에서 최적이라고 생각되는 결과값을 선택"하는 알고리즘이다. 장기적(Global)으로 보면 틀린 선택일지라도 현재(Local) 해당 결과값이 최적이라면 해당 값을 선택한다. 즉, 항상 최적해를 보장하는 것은 아니다. 그러면 최적해를 보장하지 않는데 왜 그리디 알고리즘을 쓸까? 계산속도가 매우 빠르다. 같은 내용의 문제를 DP등 다른 알고리즘을 사용하는 것 보다 빠른 속도로 결과값을 도출한다. 게다가 그리디 알고리즘을 활용할 수 있는 문제가 유형화 되어있다. 해당 유형을 익힌다면 그리디 알고리즘을 사용하지 않을 이유가..

Algorithm 2022.11.15

[Java] 백준 2839번 : 설탕 배달 <Silver 4>

⚠️ 내맘대로 작성한 코드이기 때문에 비합리적 진행과 근거없는 추론이 있을 수 있습니다!⚠️ https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net Code import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static void main(String[] args) ..

Bakejoon/Silver 2022.08.05

[Java] 백준 9663번 : N-Queen <Gold 4>

⚠️ 내맘대로 작성한 코드이기 때문에 비합리적 진행과 근거없는 추론이 있을 수 있습니다!⚠️ https://www.acmicpc.net/problem/9663 9663번: N-Queen N-Queen 문제는 크기가 N × N인 체스판 위에 퀸 N개를 서로 공격할 수 없게 놓는 문제이다. N이 주어졌을 때, 퀸을 놓는 방법의 수를 구하는 프로그램을 작성하시오. www.acmicpc.net Code import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { boolean[][] visited; int N; int count = 0; void run() throws I..

Bakejoon/Gold 2022.08.02

[Java] 백준 15649번 : N과 M (1) <Silver 3>

⚠️ 내맘대로 작성한 코드이기 때문에 비합리적 진행과 근거없는 추론이 있을 수 있습니다!⚠️ https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net Code import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class Main { ArrayList result = new A..

Bakejoon/Silver 2022.08.01