목록분류 전체보기 (57)
계발자 블로그
UICollectionView란?iOS에서 리스트 및 그리드뷰를 구현할 수 있는 뷰에는 UITableView와 UICollectionView가 있습니다. UITableView데이터를 싱글 칼럼으로 나열해 주는 뷰UICollectionView데이터를 여러 칼럼 또는 레이아웃을 커스텀해서 표현해주는 뷰(그리드 뷰)그럼 무엇을 사용해야 할까요? UICollectionView가 자유도가 높음UITableView로 구현할 수 있는 부분을 UICollectionView가 커버할 수 있음두개의 구현 난이도 차이가 크지 않음따라서 간단한 데이터를 리스트로 보여줘야 할 경우가 아니라면 UICollectionView를 사용하는게 나은 것 같습니다. UICollectionView 구성요소UICollectionView: 데이..
Class(클래스)와 Struct(구조체)클래스와 구조체는 코드를 추상화 하기 위해 사용됩니다.클래스와 구조체는 프로퍼티와 메서드를 사용하여 구조화된 데이터와 기능을 가질 수 있습니다.새로운 사용자 정의 데이터 타입을 만드는 것입니다.- 인스턴스(instance) : 클래스/구조체에서 생성된 객체 (= 구조체와 구조체라는 틀(frame)안에서 찍어낸 내용물)- 프로퍼티(property) : 클래스/구조체 객체(= 인스턴스)에 들어있는 정보, 값- 메서드(method) : 클래스/구조체 객체(= 인스턴스)에 들어있는 함수 선언하기클래스는 class 키워드를, 구조체는 struct 키워드를 이름 앞에 적어 선언합니다.class SomeClass {// 프로퍼티와 메소드를 정의합니다.}struct SomeS..
Tuple튜플은 swift에서 여러 개의 값을 하나의 값으로 묶는 데 사용되는 데이터 구조입니다.튜플은 서로 다른 타입의 값들을 포함할 수 있으며, 값을 순서대로 저장합니다. 튜플의 기본 사용법var tuple: (String, Int, Bool) = ("Kim", 100, true)var tuple2 = ("Kim", 100, 1.5)var person = (name: "Kim", age: 28, job: "president") 위의 코드에서 tuple 변수는 타입을 명시 한 문자열, 정수, boolean형으로 이루어진 값입니다.Tuple 역시 타입추론이 가능하기 때문에 타입을 직접 명시하지 않아도 괜찮습니다.또한 Tuple은 person 변수처럼 정의할 때 각 요소에 이름을 지정할 수 있습니다. 튜플..
Collectioncollection은 여러 값을 하나의 변수나 상수에 담아 관리할 수 있는 데이터 구조입니다.Swift에서는 Array, Dictionary, Set 이 세 가지가 있습니다. Array(배열)순서가 있는 값들의 모음동일한 타입의 값을 저장인덱를 통해 요소에 접근// 비어있는 배열 선언var emptyArray: [Int] = []var anotherEmptyArray = [Int]() // 타입 추론을 이용한 비어있는 배열 선언// 초기값이 있는 배열 선언var numbers: [Int] = [1, 2, 3, 4, 5]var names = ["Kim", "Lee", "Son"] // 타입 추론을 이용한 배열 선언 Dictionary키와 값의 형태로 담아 놓은 모음각 키는 고유함키를 통..
Flow란?코루틴 Flow는 Kotlin에서 비동기적인 연속적인 데이터 스트림을 처리하기 위한 라이브러리입니다. 이것은 비동기적으로 값을 생성하고 소비하는 데 사용되며, 연속적인 데이터 스트림을 표현할 수 있는 코루틴 유형입니다. 비동기적으로 작업을 처리하는 코루틴에서 Suspend 함수를 사용하면작업이 모두 완료된 후에 단일 값만을 반환받을 수 있습니다. 하지만 중간중간 진행되는 코루틴 작업 중에 갱신되는 값까지 반환받을 수 있다면로직 업데이트를 더 촘촘히 수행할 수 있습니다Flow는 이런 요구를 충족하기 위해 만들어진 타입입니다. Flow에서 데이터 스트림에 관여하는 주체는 Producer(생산자), Intermediary(중간 연산자), Consumer(소비자) 3개가 있습니다. Producer가..
Dependency Injection (DI) 의존성 주입이라고 하며 소프트웨어 디자인 패턴 중 하나로 객체지향 프로그램의 개념 중 하나입니다. 객체 간의 의존성을 외부로부터 주입하는 방법을 제공합니다. 전에 작성했던 SOLID 원칙 포스트에서 의존성 역전 원칙을 코드로 실현하는 방법이자 낮은 결합도를 실현하는데 중요한 역할을 합니다. [객체지향] SOLID 원칙 SOLID 원칙이란? SOLID 원칙이란 객체지향 프로그래밍(OOP)에서 지켜야 할 5개의 설계 원칙을 의미합니다. SRP (Single Responsibility Principle): 단일 책임 원칙 OCP (Open Closed Principle): 개방 폐쇄 원칙 LSP (Liskov thuglife.tistory.com 의존의 영향은 꼬..
SOLID 원칙이란? SOLID 원칙이란 객체지향 프로그래밍(OOP)에서 지켜야 할 5개의 설계 원칙을 의미합니다. SRP (Single Responsibility Principle): 단일 책임 원칙 OCP (Open Closed Principle): 개방 폐쇄 원칙 LSP (Liskov SubSitution Principle): 리스코프 치환 원칙 ISP (Interface Segregation Principle): 인터페이스 분리 원칙 DIP (Dependency Inversion Principle): 의존성 역전 원칙 SOLID의 목표 유지보수정: 변경에 유연해야 한다 가독성: 이해하기 쉬워야 한다. 낮은 결합도(Loose couple), 높은 응집도(strong cohesion): 여러 소프트웨..
심화 1 백준 1157번 단어 공부 난이도 : 브론즈 1 사용언어 : 코틀린 import java.io.BufferedReader import java.io.InputStreamReader fun main() = with(BufferedReader(InputStreamReader(System.`in`))) { val word = readLine().uppercase() val alphabetCount = IntArray(26) // 알파벳 카운트를 저장하는 배열 초기화 for (char in word) { if (char in 'A'..'Z') { alphabetCount[char - 'A']++ } } val maxCount = alphabetCount.maxOrNull()!! // 가장 많이 사용된 ..
추상 클래스란(Abstract Class) ? 추상 메서드를 가지고 있는 클래스를 의미합니다. 추상 메서드는 구현되지 않은 메서드입니다. 추상 클래스는 구현 되지 않은 추상 메서드를 가지고 있기 때문에 객체로 만들 수 없습니다. 반드시 자식 클래스에서 오버라이딩 즉 상속을 통해서 재정의 해야합니다. 추상 클래스의 목적은 자식 클래스에서 메서드를 오버라이딩 하기 위해 강제성을 부여하기 위함입니다. 추상 클래스 안에는 일반 메서드도 구현이 가능합니다. 추상 클래스 내의 프로퍼티 또한 abstract로 선언할 수 있습니다. 마찬가지로 상속 받는 클래스에서 구체화 해야 합니다. 추상 클래스 사용법 abstract class Super1 { abstract fun method2() } class와 fun 앞에 a..
inline 함수 코틀린에서 인라인 함수(inline function)은 함수 호출 시 해당 함수의 본문이 호출 위치에 "인라인"되어 실행되도록 하는 특별한 종류의 함수입니다. 인라인 함수는 함수 호출로 인한 오버헤드를 줄이고 성능을 최적화하는 데 도움이 됩니다. 일반적으로 함수 호출은 호출 지점에서 호출되는 함수로 이동하고, 해당 함수가 실행을 마친 후에 호출 지점으로 다시 돌아와야 합니다. 이러한 과정은 함수 호출을 위해 스택에 프레임을 추가하고 제거하는 작업을 수반하며, 성능에 영향을 줄 수 있습니다. 인라인 함수는 이러한 함수 호출 오버헤드를 제거하기 위해 컴파일러에게 해당 함수의 본문을 호출 지점에 직접 복사하도록 요청합니다. 이렇게 하면 함수 호출이 발생하지 않고 호출 지점에 함수의 본문이 인..