Developing Myself Everyday
1149번: RGB 거리 - Kotlin
백준/DP 2023. 5. 15. 15:35

1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net 문제 RGB거리에는 집이 N개 있다. 거리는 선분으로 나타낼 수 있고, 1번 집부터 N번 집이 순서대로 있다. 집은 빨강, 초록, 파랑 중 하나의 색으로 칠해야 한다. 각각의 집을 빨강, 초록, 파랑으로 칠하는 비용이 주어졌을 때, 아래 규칙을 만족하면서 모든 집을 칠하는 비용의 최솟값을 구해보자. 1번 집의 색은 2번 집의 색과 같지 않아야 한다. N번 집의 색은 N-1번 집의 색과 같지 않아야 한다. i(2 ≤ i ≤ N-1)번 집의 색..

변수 캡슐화하기 (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)와 하나의 ..