전체 글 98

캡슐화

캡슐화(encapsulation)란 클래스를 작성할 때 외부에서 숨겨야 하는 속성이나 기능 가시성 지시자(visibility modifiers)를 통해 외부 접근 범위를 결정할 수 있다. private: 이 지시자가 붙은 요소는 외부에서 접근 불가 public: 이 요소는 어디서든 접근이 가능 (기본값) protected: 외부에서 접근할 수 없으나 하위 상속 요소에서는 가능 internal: 같은 정의의 모듈 내부에서 접근 가능 public, private 코드 예시 package com.example.demo.inherit private class PrivateTest { private var i = 1 private fun privateFunc() { i += 1 println(i) } fun ac..

Kotlin 2023.12.24

프로그래머스 코딩테스트 / 약수의 합

약수는 mod로 계산했을 때 값이 0이 나오기 때문에 그 값을 더해주는 식으로 풀어봤다. class Solution { fun solution(n: Int): Int { var answer = 0 for (i in 1..n) { if(n % i == 0) { answer += i } } return answer } } if문으로 약수의 값을 구하고 answer에 하나씩 더해준 후 return했다. 다른사람의 풀이 class Solution { fun solution(n: Int): Int { var answer = 0 answer = (1..n).filter { n % it == 0 }.sum() return answer } } filter함수를 사용해 훨씬 보기 깔끔하다. filter는 Boolean값..

Algorithm 2023.12.24

프로그래머스 코딩테스트 / 자릿수 더하기

한 덩어리의 숫자를 쪼개서 값을 더해야한다. 아무리 봐도 이해가 가지 않아서 풀이를 보고 풀었다. class Solution { fun solution(n: Int): Int { var answer = 0 val str: String = n.toString() val numbers = str.toCharArray().map { it.digitToInt() } answer = numbers.sum() return answer } } n을 String으로 변환시킨다. String으로 변환시킨 n을 Char로 쪼갠다. map으로 Int 타입으로 변경시킨다. (문자 변수를 그대로 Int 시키면 아스키코드이기 때문에 변환이 제대로 되지 않는다. digitToInt()를 사용하면 숫자 그대로 출력이 된다. 다른사람..

Algorithm 2023.12.24

다형성

다형성 (polymorphism)이란? 같은 이름을 사용하지만 구현 내용이 다르거나, 매개변수가 달라서 하나의 이름으로 다양한 기능을 수행할 수 있는 개념이다. Static Polymorphism 컴파일 타임에서 결정되는 다형성 단순하게 보면 메서드 오버로딩을 사용할 때 Dynamic Polymorphism 런타임 다형성 동적으로 구성되는 오버라이딩된 메서드를 사용할 때 오버라이딩 (overriding) 기능을 완전히 다르게 바꾸어 재설계 누르다 -> 행위 -> push() push()는 '확인' 혹은 '취소' 용도로 서로 다른 기능을 수행할 수 있다. 오버로딩(overloading) 기능은 같지만 인자를 다르게 하여 여러 경우를 처리 출력한다 -> 행위 -> print() ..

Kotlin 2023.12.23

예외 처리

예외 (exception) 실행 도중의 잠재적인 오류까지 검사할 수 없기 때문에 정상적으로 실행이 되다가 비 정상적으로 프로그램이 종료되는 경우 운영체제의 문제 (잘못된 시스템 호출의 문제) 2. 입력값의 문제 (존재하지 않는 파일 혹은, 숫자 입력란에 문자 입력 등) 3. 받아들일 수 없는 연산 (0으로 나누기 등0 4. 메모리 할당 실패 및 부족 5. 컴퓨터 기계 자체의 문제 예외를 대비하기 위한 구문 try { 예외 발생 가능성 있는 문장 } catch (e: 예외처리 클래스명) { 예외를 처리하기 위한 문장 } finally { 반드시 실행되어야 하는 문장 } fun main() { val a = 6 val b = 0 val c: Int try { c = a / b println("After") ..

Kotlin 2023.12.23

확장 함수

확장함수 클래스의 멤버 함수를 외부에서 더 추가할 수 있다. fun 확장대상.함수명(매개변수, ...): 반환값 { ... return } ExtensionFunction fun main() { val source = "Hello World" val target = "Kotlin" println(source.getLongString(target)) } // String을 확장해 getLongString 추가. (String은 Class인걸 생각하자) fun String.getLongString(target: String): String = if (this.length > target.length) this else target // this 키워드는 "hello world"를 지칭함 this는 확장 대상..

Kotlin 2023.12.23

고차함수와 람다식

람다식이란? 익명 함수의 하나의 형태로 이름 없이 사용 및 실행이 가능 val multi: (Int, Int) -> Int = { a: Int, b: Int -> a * b } // 생략되지 않은 전체표현 val multi: (a: Int, b: Int) -> Int = { a, b -> a * b } // 람다식 매개변수 자료형의 생략 val multi = { a: Int, b: Int -> a * b } // 선언 자료형 생략 fun main() { val result: Int // val multi: (Int, Int) -> Int = { a: Int, b: Int -> a * b } val multi: (a: Int, b: Int) -> Int = { a, b -> println("$a, $b")..

Kotlin 2023.12.23

내일배움캠프 12.21 TIL

lazy lazy 사용예시 fun main(){ var s1 = Student() s1.name = "참새" s1.displayInfo() s1.age = 10 s1.displayInfo() } class Student { lateinit var name:String var age:Int = 0 val address: String by lazy { println("address 초기화") "seoul" } fun displayInfo() { println("이름은: ${name} 입니다.") println("나이는: ${age} 입니다.") println("주소는: ${address} 입니다.") }} - by lazy 후 값을 입력해주는 방법으로 사용한다. - 사용하는 시점에 값을 초기화 하고 대입한다..

Kotlin 2023.12.22

스코프 함수

람다함수의 특별한 케이스 val c: (String) -> Unit = { str -> println("$str 람다함수") println("2") println("3") } val calculate: (Int, Int) -> Int = { a, b -> println(a) // 람다함수도 println(b) // 여러구문 사용이 가능하다 a+b // 마지막 구문 a + b의 값을 Int형으로 반환한다. } 람다함수도 여러 구문을 사용할 수 있다. val a:() -> Unit = { println("파라미터가 없다,,") } 파라미터가 없는 람다함수는 실행할 구문들만 나열하면 된다. val c: (String) -> Unit = { println("$it 람다함수") } // 중괄호의 파라미터 이름을 ..

Kotlin 2023.12.22

내일배움캠프 12.20 TIL

ArrayList Empty ArrayList fun main() { val arrayList = ArrayList() arrayList.add("One") arrayList.add("Two") println("......print ArrayList......") for (i in arrayList) { println(i) } } ArrayList는 immutable이라 var를 사용할 수 없다. 다만 객체의 내용은 변경할 수 있다. 컬렉션을 사용하는 ArrayLIst fun main() { val arrayList: ArrayList = ArrayList(5) val list: MutableList = mutableListOf() list.add("one") list.add("two") arrayLis..

Kotlin 2023.12.22