공분산(Covariance)과 상관 계수(Correlation Coefficient)는 통계학, 데이터 분석, 머신러닝, 금융, 경제학 등에서 널리 사용되고 있다. 대표적으로 데이터 분석 분야에선 변수 간의 관계를 분석하여 데이터의 패턴을 파악하는 데 활용된다. 뿐만 아니라 피처 선택(Feature Selection)에서 상관성이 높은 변수 중 일부를 제거하여 다중공선성 문제를 방지할 때 사용된다. 현재 관심 분야인 신호 처리 및 공학 분야에선 센서 데이터 분석에서 여러 신호 간의 관계를 파악하거나 이미지 및 음성 처리에서도 변수 간의 연관성을 분석할 때 활용된다. 공분산(Covariance)공분산에 대해 설명하기 전 분산(Variance)에 대해 간단히 짚고 넘어가야 한다. 분산이란 내가 가진 데이터가..
문제https://www.acmicpc.net/problem/15686 해설각 치킨집의 조합을 만들어서 Brute Force를 이용하여 해결하였다. 백준이 지금 시간 기준으로 이상한건지는 모르겠지만 Python과 Java 코드 모두 제출하면 성공일 때도 있고 컴파일 에러나 런타임 에러(NZEC)가 발생할 때도 있다. 정답이었던 코드를 그대로 제출해도 이런 결과가 나와서 원인이 뭔지 찾지 못하였다. 혹시 비슷한 현상이 일어나거나 업로드한 코드에서 문제가 있는 부분을 알고 계신다면 댓글 부탁드립니다. Pythonfrom sys import stdindef get_distance(combination: list): total_distance = 0 for hx, hy in houses: ..
문제https://www.acmicpc.net/problem/2615 해설반복문을 이용한 완전 탐색 방법으로 해결할 수 있었다. DFS로도 접근해보았는데 잘 해결되지 않아 방법을 바꾸어 다시 접근하였다. 6목이 되는 케이스에 대한 검사가 필요했고, directions 부분에 왔던 방향을 되돌아가지 않도록 설정하는 아이디어도 주요했던 것 같다. Pythonfrom sys import stdin# 방향: 오른쪽, 아래, 대각선(↘), 대각선(↗)directions = [(0, 1), (1, 0), (1, 1), (-1, 1)]def check_winner(row: int, col: int, direction: tuple): stone = board[row][col] depth = 1 x, y..
문제https://www.acmicpc.net/problem/2529 해설Brute Force로 접근하였는데 생각보다 풀어내기 쉽지 않았다. 이후 생각을 바꿔 DFS를 이용하였다. 뿐만 아니라 백트래킹(Backtracking)에 대한 이해도 필요하다. 탐색 도중 더 깊은 depth에 대한 탐색이 필요 없을 때 pruning이라 불리는 가지치기를 이용하여 유망한(promising) 경로만 계속 진행한다. 이 과정은 "선택 - 탐색 - 복구" 구조로 구성되어 있고, 이를 통해 가능한 모든 경우의 수를 탐색할 수 있다. 이 Backtracking은 마치 임계구역 문제에서 한 번에 한 경로만 특정 숫자를 사용할 수 있도록 보호하는 역할과 유사한데, 공유 메모리 문제에서 고려되는 Critical Section에 ..
문제https://www.acmicpc.net/problem/1051 해설Brute Force를 이용하여 모든 경우의 수를 탐색하여 해결하였다. CNN에서의 Sliding Window를 연상해보면 더 쉽게 해결할 수 있다. Pythonfrom sys import stdindef brute_force(matrix: list, n: int, m: int): max_size = n if n Javaimport java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new Inpu..
핵심 개념완전 탐색(Brute Force)은 가능한 모든 경우의 수를 전부 탐색하여 정답을 찾는 방법이다. 최적화 없이 모든 경우를 시도하기 때문에 구현이 간단하지만, 경우의 수가 많아지면 비효율적일 수 있다. 시간 복잡도완전 탐색의 시간 복잡도는 일반적으로 \( O(N!) \) 또는 \( O(2^N) \) 등 매우 높은 편이다. 예를 들어, n개의 요소가 있을 때 가능한 모든 순열을 탐색하는 경우 \( O(N!) \)이 된다. 따라서 입력 크기가 커질수록 실행 시간이 급격히 증가한다. 동작방식 & 구현완전 탐색은 보통 다음과 같은 방식으로 동작한다.가능한 모든 경우의 수를 생성한다.각 경우가 문제의 조건을 만족하는지 확인한다.원하는 결과를 찾으면 반환하거나 최적의 해를 갱신한다. 활용 가능한 문제 유..