전체 글 96

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..

HTML 태그 내 텍스트 줄 바꿈 유지하기

Q 어떤 문제가 있었는지 미니 프로젝트에서 방명록의 CRUD를 구현 후 테스트 할 때 엔터로 구분하여 두 줄 이상 글을 작성하고 등록, 수정 시 한 줄로 보이는 문제가 발생했다.방명록을 보여줄 때 내용이 작성된 부분은 태그로 되어 있다가 수정을 누르면 태그로 변경되고 그 안에서 글을 수정할 수 있게 구현되어 있는 상태였다.다음 이미지는 수정 버튼을 눌러 태그 내 글을 작성했을 때이다. 위와 같이 엔터를 쳐서 두 줄로 만든 후 수정 버튼을 클릭하면 글은 정상 수정되지만 한 줄로 나오게 된다. Q 내가 시도해본 것들태그를 사용해서 작성한 내용이 들어있는 태그를 감싸서 줄바꿈이 그대로 적용되도록 했지만 수정을 할 때 태그로 변경되면서 줄 바꿈이 사라졌다. (innerText의 값을 사용)innerTex..

HTML 2024.04.19