전체 글 98

TIL - Kotlin에서 main 함수 실행 시 LinkageError 발생

문제 없이 실행되던 main 함수가 갑자기 다음과 같은 에러 메시지를 띄우면서 실행이 되지 않았다. 오류: 기본 클래스 lv1.MainKt을(를) 로드하는 중 LinkageError가 발생했습니다. java.lang.UnsupportedClassVersionError: lv1/MainKt has been compiled by a more recent version of the Java Runtime (class file version 62.0), this version of the Java Runtime only recognizes class file versions up to 61.0 [파일] → [프로젝트 구조] → [프로젝트 설정] → [프로젝트] → [SDK]를 확인한다. 위와 같은 에러가 발생한..

Kotlin에서 Getter / Setter를 무조건 만들어야 할까?

kotlin을 배우면서 custom getter / setter에 대해 알게 되었다.멤버 변수 아래 작성하고 get, set 함수 내에서 값에 대한 접근은 field 키워드를 사용한다는 것이 java와 달랐다.그런데 왜 custom일까? 하는 생각으로 빌드된 바이트 코드를 디컴파일해서 java 코드로 살펴보기 시작했다. IntelliJ IDEA에서 [Tools]  → [Kotlin]  → [Show Kotlin Bytecode]  → [Decompile]로 디컴파일된 java 코드를 확인할 수 있다. 다음은 kotlin에서 custom set 함수를 작성하고 컴파일 후 바이트 코드를 디컴파일한 java 코드이다.나는 set 함수만 작성했지만 java 코드를 보면 getResult라는 getter 메서드가..

Kotlin 2024.04.26

Programmers SQL 문제 풀이 51 ~ 60

없어진 기록 찾기https://school.programmers.co.kr/learn/courses/30/lessons/59042-- 1. 입양 기록에 있는 동물-- 2. 보호소 기록에는 없는 동물-- 3. ID와 이름을 ID순으로 조회-- ---------------------------- 1. 보호소 기록 테이블과 입양 기록 테이블을 JOIN한다.-- 2. 보호소 기록의 동물 ID가 NULL인 경우를 조건으로 건다.-- 3. 입양 기록 테이블의 동물 ID, 이름을 조회한다.-- 4. ID를 기준으로 오름차순 정렬한다.SELECT t2.animal_id, t2.nameFROM animal_ins t1 RIGHT JOIN animal_outs t2 ON t1.animal_id = t2.anim..

SQL/SQL문제풀이 2024.04.25

SQL - 날짜에 관한 group by 문제

해당 문제는 프로그래머스의 Level 3 SQL문제 중 group by에 대한 문제이다.https://school.programmers.co.kr/learn/courses/30/lessons/157340 이 문제에 대해 내가 생각한 풀이는 다음과 같다.자동차 ID 별로 max를 이용해 최근 대여 시작일과 대여 종료일을 가져온다.두 날짜 사이에 '2022-10-16'이라는 특정 날짜가 있다면 현재 대여중이고 아니라면 대여가 가능한 상태이다.위 풀이대로 쿼리를 작성했고 결과는 오답이다.SELECT car_id, CASE WHEN '2022-10-16' BETWEEN start_date AND end_date THEN '대여중' ELSE '대여가능' END availabil..

두 번째 Kotlin 계산기 구현 - 객체지향에 대해 생각하기

두 자리 단순 계산에 이어 이번에는 키보드로 수식을 입력하면 연산 후 값을 출력해주는 계산기를 만들어 봤다.계산기 프로그램을 실행하면 다음 이미지와 같이 작동된다. 코드는 깃허브에 올려져 있어서 링크만 첨부한다.https://github.com/hellou8363/kotlin-individual-assignment/tree/main/week2 동작 방식은 다음과 같다. (이것도 README에 작성되어 있다.)Guidance 클래스의 usageGuide 함수가 계산기 사용에 대한 안내를 출력하고 키보드 입력을 받는다.입력 받은 값을 Storage 클래스의 save 함수에 전달한다.save 함수는 입력 받은 값이 다음에 해당할 때 Guidance 클래스의 errorGuide 함수에게 전달..

TIL - ConcurrentModificationException 예외 발생

Q 어떤 문제가 있었는지간단하게 만들었던 계산기를 더 업그레이드 하기 위해 숫자와 연산 기호를 따로 저장하고 수정하기 위해 리스트를 사용하면서 ConcurrentModificationException 예외가 발생했다.배열이나 리스트를 사용하면서 IndexOutOfBoundsException 예외는 자주 봤었지만 이번 예외는 처음 보는거라 구글링으로 예외에 대해 찾아 보았다.컬렉션 수정 도중 다른 스레드에서 동시에 수정하려고 할 때 발생한다는 글이 많았는데 스레드는 사용하지는 않았지만 컬렉션 수정을 시도한 것은 맞기 때문에 내 코드에서 리스트를 순회하는 코드를 다시 살펴 보았다.Q 어떻게 해결했는지내 코드를 살펴보니 리스트를 forEach로 순회하면서 그 안에서 현재 순회하고 있는 리스트의 요소를 삭제하려..

[Kotlin 문법] 함수

함수 : 코드를 사용할 수 있는 최소 단위 함수의 기본 구조반환하는 값이 있을 경우 반환타입을 명시해야 한다.반환타입과 return 값을 정의하지 않으면 반환값이 없는 함수가 된다.파라미터명을 정의하지 않으면 입력값이 없는 함수가 된다.fun 함수명(파라미터 이름: 타입): 반환 타입 { return 값} 단일 함수 표현식함수가 단일 표현식을 사용할 경우 중괄호({}) 없이 다음과 같이 작성할 수 있다.fun add(x: Int, y: Int) = x + y 함수의 사용함수를 사용하기 위해서는 함수명 옆에 괄호()가 있어야 실행된다. → 함수명(값)파라미터가 없는 경우 값을 입력하지 않는다. → 함수명()반환값이 없는 경우는 변수에 대입 없이 사용한다.반환값이..

Kotlin/Kotlin문법 2024.04.23

Programmers Kotlin 문제 풀이 11 ~ 20

짝수와 홀수 https://school.programmers.co.kr/learn/courses/30/lessons/12937 class Solution { fun solution(num: Int): String { return if(num % 2 == 0) "Even" else "Odd" } } 평균 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/12944 class Solution { fun solution(arr: IntArray): Double { return arr.average() } } 자릿수 더하기 https://school.programmers.co.kr/learn/courses/30/lessons/12931 class So..

Kotlin으로 만드는 단순 계산기

Kotlin 문법을 배우고 적용해보기 위해 단순 계산을 하는 계산기를 만들어 보았다. Calculator 클래스를 생성 클래스 내 사칙연산을 수행하는 함수를 작성 메인 함수에서 Calculator 클래스의 인스턴스를 생성 사칙연산 함수를 하나씩 실행 class Calculator { val add: (Int, Int) -> Int = { a, b -> a + b } val sub: (Int, Int) -> Int = { a, b -> a - b } val mul: (Int, Int) -> Int = { a, b -> a * b } val div: (Int, Int) -> Int = { a, b -> a / b } } fun main() { val calculator = Calculator() printl..