프로그래머스 문제를 풀며 헷갈리는 부분을 매번 검색하는 수고를 줄이고자 조금씩이라도 꾸준히 작성해보고자 한다 🤓맵(Map)은 특정 키가 부여된 값을 쉽게 찾을 수 있도록 설계된 키(Key)와 값(Value) 쌍의 집합이다. 키는 고유하며 중복이 불가능하지만 값은 중복
Map과 List를 정리 해보며 컬렉션의 immutable과 mutable을 더 이해할 수 있게 되었다. 리스트를 검색하면서 리스트와 같이 사용할 수 있는 함수들이 생각보다 더 많다는 것을 느꼈고 기본적인 사용법을 정리한 후 해당 함수들에 대해서도 정리할 필요가 있다고
리스트의 요소가 같은 것을 묶어 개수를 세는 코드를 일반적으로 반복문을 사용하여 카운트를 하는 방식으로 진행하였는데 새로운 방식으로 코드를 작성해보고 싶다는 생각이 들었다. 검색을 하다 groupingBy라는 함수를 알게 되었고 eachCount 함수와 같이 사용하여
정렬 함수에 대해 눈으로만 대충 보고 넘어갔더니 불변형 타입에 sort와 같은 함수를 사용하여 에러가 발생한 적이 몇 번 있었다. 더이상 이러한 실수를 하지 않도록 내용을 정리해보며 확실하게 짚고 넘어가려 한다. sorted() : 오름차순 정렬불변형 리스트를 오름차순
지난번에는 Map, List와 같이 컬렉션의 개념을 정리하였는데 오늘은 컬렉션에서 자주 사용 되는 함수 몇가지를 정리하겠다. 제공되는 확장 함수는 무수히 많지만 컬렉션을 활용할 때 가장 많이 사용 되는 filter와 map 그리고 zip을 우선적으로 작성해보려고 한다.
지난번에는 컬렉션에서 자주 사용되는 함수인 map, filter, zip을 정리하였는데 오늘은 컬렉션의 조건 함수에 대해 정리하려고 한다. 조건 함수인 all, any, none은 컬렉션의 특징을 간단히 파악하고자 할 때 사용되며 함수들의 조건식을 지정할 때는 람다식을
abstract class는 추상 클래스를 의미한다.abstract 내부에 abstract 멤버를 하나 이상 가진 클래스를 의미한다. 추상 클래스는 그 자체의 객체를 생성할 수 없다.open 키워드를 따로 추가하지 않아도 된다. 추상 클래스로 만들기 위해서는 abstr
서로 관련성 없는 클래스들이 인터페이스를 구현하게 되는 경우에 사용한다. 인터페이스는 다중 구현을 허용 하고 싶은 경우 사용한다. 인터페이스는 구성 요소들이 자주 바뀔 때 사용하면 유용하며 공통된 메소드(객체 행위)로 만들어 사용하고 싶을 때 인터페이스를 이용하면 효과
덧셈 연산을 구현하는 중 입력값을 Double로 형변환하여 연산을 진행하였다. 연산 결과가 원하는 대로 곧 잘 나왔지만 0.1 + 0.2를 했을 때 0.30000000000000004라는 결과가 나왔다. 소수점을 다룰 때 부동소수점 오류로 인해 소수점이 제대로 표현되지
호텔 예약하기 프로그램을 구현하면서 기능 중에 체크인, 체크아웃 날짜를 문자열로 입력받아 날짜를 계산하고 예약하는 부분이 있다. "20231201"과 같은 형식의 문자열을 LocalDate를 사용하여 날짜로 바꿔 계산을 진행하였는데 오늘은 이 부분을 정리해보려 한다.
코틀린은 클래스를 설계할 때 안정성을 위해 변수의 값을 초기화 할 것을 권장한다.클래스를 설계할 때 초기값 정의가 난처해 나중에 대입하기 위한 문법이다.지연 초기화 또는 늦은 초기화를 위해 lateinit과 lazy 키워드를 사용한다.저사양으로 제한 되어 있는 환경에서
오버라이딩은 부모-자식 상속 관계에 있는 클래스에서 상위 클래스의 메서드를 하위 클래스에서 재정의하는 것을 말한다.오버라이딩을 하기 위해서는 하위 클래스에서 선언하려는 멤버가 상위 클래스의 멤버와 이름과 형태가 동일해야 하며 함수가 open되어 있어야 한다. 오버로딩은
추상클래스와 상속의 개념을 이해했다고 생각했는데 막상 새로운 프로젝트에 적용하려고 하니 막막했다. 개념을 짚고 넘어가는 것도 중요하지만 많은 예제를 따라하고 응용해보며 사용법을 익혀야겠다고 생각했다. 추가적으로 구현해야 할 기능은 많지만 내일은 우선적으로 객체별 아이템
어제에 이어 키오스크 프로그램을 추가로 구현하면서 생각대로 구현하는 게 어렵다는 것을 다시 한 번 깨달았다. 이렇게 저렇게 하면 되지 않을까? 생각을 하다가도 그 생각을 그대로 구현한다는게 얼마나 힘들던지.. 🥹 지금 하고 있는 키오스크 프로그램의 경우 아직 3단계까
선택한 메뉴 카테고리의 아이템 목록을 보여주는 부분에서 선택한 아이템을 장바구니에 담는 부분을 추가로 구현했다. Cart 클래스는 장바구니에 아이템을 담고 장바구니 목록을 보여주고 가격의 총합을 보여주기 위한 클래스이다. 이전에는 메뉴 아이템에 관련 된 부분과 메인 카
비동기 프로그래밍이란 여러가지의 로직들이 완료 여부에 관계 없이 실행되는 방식을 의미한다.비동기 프로그래밍은 요청을 보내고 결과 값을 받을 때까지 멈추지 않고 다른 일을 수행한다. \- 동기 프로그래밍은 요청을 보내고 결과 값을 받을 때까지 작업을 멈춘다. Thre
코틀린의 컬렉션에는 컬렉션 내의 데이터를 모으는 함수인 reduce()와 fold()가 있다.이전에 컬렉션의 확장 함수를 정리할 때 fold와 reduce도 같이 정리하려고 했지만 함수를 처음 접했을 때는 두 개를 구분하고 이해하는게 조금 어려웠다..😅 다시 찾아보고
MainMenu > 이전에 메인 메뉴를 Map을 사용하여 관리했는데 결국 Key와 value를 이용해 index를 활용해 처리하고 있어서 처음부터 List 형태로 구성해도 괜찮겠다는 튜터님의 피드백을 참고하여 List 형태로 관리하고자 메인 메뉴의 속성(id, tit
실행 순서1\. 로그인 화면에서 회원가입 버튼을 클릭한다.2\. 회원가입 화면에서 이름, 아이디, 비밀번호를 입력 한 후 회원가입 버튼을 클릭한다.3\. 로그인 화면으로 돌아올 때 아이디, 비밀번호가 자동으로 입력 된다.registerForActivityResult란
키오스크 프로그램의 경우 얼마 전 과제로 나왔던 건데 필수 구현 사항의 레벨이 3단계 까지고 선택 구현 사항의 레벨은 4~7단계까지 있었다. 필수 사항만 구현하여 제출했었는데 시간적 여유가 있을 때마다 조금씩 추가 레벨 부분을 구현하고 있다. 이전에 작성한 코드를 계속
Kotlin 표준 라이브러리에는 객체 내에서 코드 블록을 실행하는 것이 유일한 목적인 여러 함수가 포함되어 있다.제공 되는 람다식이 있는 개체에서 이러한 함수를 호출하면 임시 범위(Scope)가 형성 된다.이 범위에서는 이름 없이 개체에 접근할 수 있으며 이러한 함수를
해당 진법으로 변환해준다. "1111".toInt(N) 의 경우 "1111"은 N진수로 표현되고 이를 toInt() 10진수로 변환하는 함수이다. 해당 진법으로 변환해준다.10진수를 toString(N)를 사용하여 N진수 문자열로 변환한다.
음수의 이진 표현은 보수 표현을 사용한다. 보수 표현은 이진수를 표현할 때 첫 번째 비트가 부호를 나타내는데, 0이면 양수를 의미하고, 1이면 음수를 의미한다. 음수의 이진 표현은 해당 값의 양수 표현의 모든 비트를 반전한 후 1을 더한 것이다. \-5를 8비트의 이진