Developing Myself Everyday
변수 캡슐화하기 (Encapsulate Variable)
Android/Kotlin 2023. 5. 12. 17:39

변수 캡슐화란? 변수 캡슐화는 객체 지향 프로그래밍에서 중요한 원칙 중 하나이다. 이는 클래스의 맴버 변수를 외부에서 직접 접근하는 것이 아니라, 해당 변수에 대한 접근을 제한하고 메서드를 통해 간접적으로 변수에 접근하는 것을 말한다. 변수 캡슐화를 하면 다음과 같은 이점이 생긴다. 정보 은닉: 변수를 private로 선언할 수 있어 클래스 내부의 데이터를 보호하고, 외부에 불필요한 세부 구현을 감춘다. 접근 제어: getter와 setter 메서드를 통해 변수에 접근하므로, 변수에 대한 유효성 검사, 제한된 접근 권한 설정 등을 수행할 수 있다. 유연성과 유지보수성: 변수에 대한 의존성을 제한하여 클래스 내부의 구현 변경에 유연하게 대처할 수 있으며, 코드의 유지보수성을 향상시킨다. 설명만 듣고선 알기..

Factory Pattern(팩토리 패턴) by Kotlin

팩토리 패턴이란? 팩토리 패턴(Factory Pattern)은 객체를 생성할 때 사용되는 디자인 패턴이다. 이 패턴은 객체 생성을 캡슐화하고, 클라이언트 코드와 객체 생성 코드를 분리함으로써 유연성과 확장성을 제공한다. 일반적으로 팩토리 패턴은 추상화된 인터페이스를 정의하고, 이를 구현하는 여러개의 팩토리 클래스를 만들어 사용한다. 클라이언트는 팩토리 인터페이스를 통해 객체를 생성하고 반환받을 수 있다. 팩토리 클래스는 객체 생성에 대한 로직을 구현하고, 실제 객체의 인스턴스를 생성하여 반환한다. 간단하게 말하자만 객체를 생성하는 부분을 Sub Class에 맡긴다고 생각하면 된다. 팩토리 패턴은 다음과 같은 장점이 있다. 객체의 생성을 중앙집중화해 코드의 유지보수성과 확장성을 향상시킨다. 구체적인 구현클..

1759번: 암호 만들기 - Kotlin (DFS)
백준/그래프 탐색 2023. 5. 11. 19:02

1759번: 암호 만들기 첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다. www.acmicpc.net 문제 바로 어제 최백준 조교가 방 열쇠를 주머니에 넣은 채 깜빡하고 서울로 가 버리는 황당한 상황에 직면한 조교들은, 702호에 새로운 보안 시스템을 설치하기로 하였다. 이 보안 시스템은 열쇠가 아닌 암호로 동작하게 되어 있는 시스템이다. 암호는 서로 다른 L개의 알파벳 소문자들로 구성되며 최소 한 개의 모음(a, e, i, o, u)과 최소 두 개의 자음으로 구성되어 있다고 알려져 있다. 또한 정렬된 문자열을 선호하는 조교들의 성향으로 미루어 보아 암호를 이루는 알..

15686번 치킨 배달 (DFS)- Kotlin
백준/브루트포스 2023. 5. 11. 18:01

15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 문제 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다. 이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. ..

article thumbnail
1-3. Gradient Descent (경사 하강법)

머신러닝에 대해서는 아래의 유튜브를 통해 학습하였다. Gradient Descent (경사 하강법) 경사 하강법은 머신 러닝과 최적화 알고리즘에서 매개변수를 조정하여 함수의 최솟값을 찾는 기법이다. 주어진 함수의 기울기를 활용하여 최적의 매개변수 값을 찾아가는 방법이다. 경사 하강법은 일반적으로 손실 함수를 최소화하는데 사용된다. 손실 함수는 모델의 예측값과 실제값 사이의 차이를 나타내는 함수로, 모델의 성능을 평가하는 지표이다. 경사 하강법은 손실 함수의 기울기를 따라 가장 빠르게 감소하는 방향으로 매개변수를 업데이트하여 최적의 매개변수 값을 찾아낸다. 경사 하강법에서 매개변수는 일반적으로 2가지가 있다. - 학습률 (learing rate): 평가 하는 데이터의 보폭, 일반적으로 (0.001, 0.0..

article thumbnail
1-2. 데이터 세트 분리

머신러닝에 대해서는 아래의 유튜브를 통해 학습하였다. 데이터 세트 분리 데이터 세트 분리는 머신 러닝 모델을 학습, 검증 및 테스트하기 위해 사용되는 데이터를 적절하기 나누는 과정이다. 일반적으로 우리가 가지고 이는 데이터를 훈련 세트와, 테스트 세트로 분류를 하게 된다. 전체 데이터의 80에 해당하는 만큼을 가지고 머신 러닝 모델을 훈련시킨 다음, 나머지 20에 해당하는 테스트 세트로 모델이 잘 동작하는가 평가를 하게 된다. 데이터 세트 분리의 목적은 모델이 학습 데이터에 과적합 되지 않고 새로운 데이터에 대해 일반화할 수 있는 능력을 갖추도록 하는 것이다. 학습 세트를 사용하여 모델을 학습시키고 검증 세트를 사용하여 모델의 성능을 조정하며, 테스트 세트를 사용하여 최종적인 성능을 평가한다. 데이터 세..

article thumbnail
1-1. Linear Regression

머신러닝에 대해서는 아래의 유튜브를 통해 학습하였다. Linear Regression (선형 회귀) 선형 회귀는 통계학과 머신 러닝에서 가장 기본적이고 널리 사용되는 예측 모델 중 하나로, 입력 변수와 출력 변수 간의 선형 관계를 모델링하려는 것이다. 간단히 말해, 선형 회귀는 주어진 입력 변수에 대해 출력 변수를 예측하는 작업을 수행한다. 입력 변수는 종종 '독립 변수' 또는 '특성' 이라고도 불리며, 출력 변수는 '종속 변수' 라고도 불린다. 선형 회귀는 입력 변수와 출력 변수 사이의 선형적인 관계를 가정하고, 이 관계를 통해 새로운 입력 값에 대한 출력 값을 예측하는 것이 목표이다. 선형 회귀는 기본적으로 선형 방정식을 통해 모델을 구성한다. 간단한 경우를 살펴보자. 하나의 입력변수(x)와 하나의 ..

article thumbnail
Machine Learning의 분류

안드로이드 개발자를 목표로 하고 있는 사람으로서 머신러닝을 공부하지 않는다는 것은 한계가 분명 명확할 것이라고 생각한다. 머신러닝을 완벽하게는 아니더라도 어떤게 있고 나중에 프로젝트를 진행할 때, 어떤 방식으로 머신러닝을 진행하야 하는지, 학습방식은 어떤 방식이 있는지에 대해 미리 알고 있는것은 나중에 나에게 그런 일이 주어졌을 때에 큰 힘이 될 것이다. 그래서 이제부터 머신러닝은 어떤것이고, 어떤 학습방식이 있는지에 대해서 알아보려고 한다. 머신러닝에 대해서는 아래의 유튜브를 통해 학습하였다. 머신러닝이란? 머신러닝은 컴퓨터 시스템이 데이터로부터 학습하고 패턴을 식별하며 예측하는 방법이다. 기본적으로, 머신러닝은 명시적인 프로그래밍 없이 데이터를 분석하여 패턴과 통찰력을 발견하고 이를 기반으로 결정을 ..