클래스 구조class Person { var firstName: String = "" var familyName: String = "" var age: Int = 0 fun fullName() = "$firstName $familyName" fun showMe() { println("${fullName()}: $age") }} 위 클래스의 인스턴스마다 firstName, familyName. age라는 프로퍼티와 fullName(), showMe()라는 함수가 포함된다. cf) 파일명을 public 클래스의 이름과 동일하게 만들지 않아도 된다.한 파일에 여러 public 클래스가 존재할 수 있다. 2. 생성자주생성자class Person(first..
문자열 문자열 템플릿 import java.util.Date fun main() { val name = readLine() println("Hello, $name!\n, Today is ${Date()}") } ${}의 중괄호 사이에 코틀린 식을 넣으면 문자열에 식을 넣을 수 있다. 간단한 변수 참조인 경우 중괄호의 생략이 가능하다. 2. 로우 문자열 val message = """ Hello, &name! Today is ${Date()} """.trimIndent() 큰따옴표 세 개로 둘러싸여 있는 로우 문자열을 사용하면 이스케이프 시퀀스를 사용하지 않고 문자열을 작성할 수 있다. 3. 문자열 비교 자바 코틀린 ==와 != 연산자는 참조 동등성을 비교한다. 실제 문자열 내용을 비교하려면 equals(..
변수 val timeInSeconds = 15 val 키워드 한번 초기화하면 다시는 값을 대입할 수 없는 불변 변수를 정의하는 키워드. 자바의 final 변수와 비슷하다. 2. var 키워드 val과 반대로 가변 변수를 정의할 때 사용하는 키워드. 3. 타입 추론 변수 타입을 지정하지 않아도 컴파일러가 코드의 문맥에서 타입을 도출해주는 기능. 4. 변수 타입을 명시하는 경우 val text: String text = "Hello!" 초깃값을 생략하고 다른 문장에서 변수를 초기화하는 경우 변수 타입을 명시해야 한다. 기본 타입 1. 타입 정수 타입: Byte, Short, Int, Long 실수 타입: Float, Double 문자 타입: Char 논리 타입: Boolean 2. 원시 타입, 참조 타입 원..
조건문 if 문 fun max(a: Int, b: Int) = if (a > b) a else b 자바의 삼항 연산자가 없는 대신 if 문을 식으로 사용할 수 있다. 2. when 문 if 문을 중첩하여 사용하기 보다 when 문을 통해 조건을 순차적으로 검사한다. fun hexDigit(n: Int): Char { when { n in 0..9 -> return '0' + n n in 10..15 -> return 'A' + n - 10 else -> return '?' } } 여러 개의 조건 -> 문, 하나의 else -> 문으로 이루어질 수 있다. 자바의 switch와 비슷하지만 값을 선택하는 것이 아닌 임의의 조건을 검사한다. (또한 자바의 폴스루를 지원하지 않음) 하나의 변수만을 비교한다면 wh..
프로그래밍 직무에 합격했고, 세부 직무는 선택할 수 없었지만 자소서나 포트폴리오에 백엔드 위주로 작성했습니다.면접까지 가게 된 건 처음이라 아쉬움이 많이 남지만 기록용으로, 그리고 더 부족한 점을 개선하기 위해 후기를 작성해봅니다! 1. 전형 절차전형 절차는 서류 -> 코테 -> 직무면접 -> SKCT 였습니다. 서류만 내면 코테를 볼 수 있고, 서류 붙으면 면접결과에 상관없이 SKCT를 볼 수 있었기 때문에사실상 서류/코테 -> 직무면접/SKCT 이렇게 두 차례로 채용이 되는 거네요.인턴이라 그런지 생각보다 채용 과정이 짧아서 좋았습니다 ㅎ 2. 서류+코딩테스트저는 서류에 자신이 없었고 그나마 코테를 열심히 공부했기 때문에.....서류 합격 후에 코테 볼 수 있는 것 보다는, 서류 낸 사람들 모..
https://www.acmicpc.net/problem/2423 2423번: 전구를 켜라 첫째 줄에 문제의 정답을 출력한다. 전구에 불을 켜는 것이 가능하면, 몇 개의 칸을 돌려야 하는지를 출력하고, 불가능할때는 "NO SOLUTION"을 따옴표 없이 출력한다. www.acmicpc.net 문제 선영이는 N × M 직사각형 크기의 전자 회로를 디자인 하고 있다. 회로에는 N × M개의 정사각형 타일이 있고, 모두 직사각형의 변과 평행하다. 모든 타일은 두 개의 마주보는 꼭짓점이 전선으로 연결되어 있다. (그림 참조) 전원은 왼쪽 위 모서리에 연결되어 있고, 전구는 오른쪽 아래 모서리에 연결되어 있다. 전구는 전원에서 전구로 가는 경로가 있을 때만 불이 켜진다. 전구에 불을 켜기 위해서, 선영이는 몇개의..
이분탐색 상한선, 하한선을 구할 때 while 종료조건과 lo/hi를 갱신하는 경우 mid인지, mid + 1인지, mid - 1인지.. 너무 헷갈려서 따로 정리해보려한다. 이분탐색을 수행하기 위해서는 배열이 오름차순 정렬되어야 한다. - 일반적인 이분탐색 (key가 존재하는 위치 반환) static int binarySearch(int[] arr, int key) { int lo = 0; int hi = arr.length - 1; while(lo key) hi = mid - 1; else if(arr[mid] < key) lo = mid + 1; else return mid; } return -1; // key 값이 존재하지 않는 경우 } - 하한선 (key와 같거나 초과하는 값이 처음으로 나타나는 ..
https://school.programmers.co.kr/learn/courses/30/lessons/77486 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr seller/amount의 최대 길이는 100,000이기 때문에 판매한 금액마다 부모의 끝까지 올라간다면 시간 측면에서 비효율적이라고 생각했다. 그래서 판매한 금액들을 ArrayList에 저장하고, 리프 노드의 금액 */ 10을 자신의 한 단계 부모에게만 전달하는 방식으로 구현해봤다. 그리고 리프 노드에서 처리가 끝나면 그 노드와 부모의 연결을 끊어주면, 또 다른 리프노드가 생겨나고, 모든 노드가..