728x90

전체 글 169

코드포스 2057A) Mex Table

Mex Table 코드포스에서 쉬운 문제중 하나인 Mex Table 이 문제는 풀기 쉬운편에 속한다. 일단 문제를 풀기 위해 MEX 함수에 대해 이해하는 시간을 가져보자. MEX 함수는 0을 포함한 음이 아닌 정수중 collection 에 나열되지 않은 가장 최솟값을 뜻한다. 예를 들면, 아래식은 반드시 0의 값을 가진다.$$ MEX({1,2,3,4}) = 0 $$이 값이 반드시 0을 가지는 이유는 0을 포함한 음이 아닌 정수이므로 0이 가장 작은 값이기때문이다. 이해가 안간다면, 검색을 해봐도 좋고, 문제를 다시 읽어봐도 좋다. 일단 MEX 는 이렇게 설명하고 넘어가겠다. 사실 문제에서 페이크인지 일부러 적어둔지는 모르겠지만, 사용할수 있는 가짓수를 정렬해서 값을 최대화 하는 것이라고 하는데 실상 이리..

Algorithm 2025.01.18

[선형대 수학] 벡터의 내적(inner product)

선형대수학을 하다보면 이런저런 학창시절에 배운 수학 지식이 필요하다. 학창시절에 수학을 하고, 성인 되고나서는 거의 안하다 시피 해서 까먹었는데 요즘 인공지능을 공부하다 보니 다시 선형대수학을 공부하며 나머지 수학 지식들도 정리중이다. 공부하다보니, 시간이 촉박하여 잘 정리하지는 못하는데 수학적인 지식을 오랜만에 정리해보려고 한다. 벡터의 내적벡터의 내적(inner product) 를 이해하기 위해서는 여러가지 수학적 지식을 필요로 한다. 이 글을 읽는 독자들은 나만큼 수학에 무지하다는 생각으로 글을 작성하겠다. 일단, 벡터의 내적을 이해하기 위해서는 삼각함수의 지식을 필요로 한다. 삼각함수 부터 들어가보자.삼각함수삼각함수는 쉽게 말해 각(theta) 를 기준으로 인접한 변사이의 비율을 나타내는 것이다...

Math 2025.01.08

Affine 계층 계산 그래프에서 역전파시 전치행렬이 나오는 이유

Affine 계층을 보면 1번의 네모 박스에서 갑자기 전치행렬이 등장하는 것을 확인할 수 있다. 물론, 수학적으로 사고가 조금 되시는 분들은 왜 전치행렬이 등장하는지 아실수 있을거 같으나, 이전에 스칼라를 이용해 역전파를 구성했을때는 전치행렬이 아닌 그냥 W 가 곱해져야 하는게 아닌가? 라고 사고할수도 있다고 생각한다. 나와같이 이런 궁금중을 가진 사람이 또 존재할까봐 한번 수식으로 증명해보며 확인해보려고 한다.탐구이럴때는 사실 작은 예시를 하나 만드는게 가장 편하다. 아래와 같은 작은 식이 하나 있다고 해보자 $$Y = W*X$$ X, W, Y 에 관한 정의는 아래와 같다X 는 (1,2) 행렬이다.W 는 (2,3) 행렬이다.W*X 의 곱의 결과가 Y 이므로 Y 는 (1,3) 의 행렬이 된다.$$X = ..

AI 2025.01.04

머신러닝 공부 1일차) 지도 학습 VS 비지도 학습

시작하며머신러닝 공부를 시작하는 이유는 요새 LLM 등이 핫한데 이것 저것 만지다보니, 어떻게 이렇게 사고하는 모델을 만들었을까? 되게 궁금증이 많이 들었고 이런 기술을 좀 더 잘 이해하기 위해서는 기초 수학 -> 머신 러닝 -> 딥러닝 -> LLM 순으로 공부해서 조금 이해도를 점진적으로 확장시켜야 겠다는 생각을 했다. 여하튼, 이게 도움이 될지 안될지는 모르겠지만, 지금 당장 AI 를 공부하는것이 흥미 있어서 2025년은 조금 AI 공부에 많은 시간을 쏟지 않을까 싶다.머신러닝이란?머신러닝이란 주어진 데이터를 기반으로 일련의 패턴을 찾아 학습된 모형을 만드는 것을 뜻합니다. 학습된 모형을 이용해 제공되는 데이터에 대한 분류가 이뤄지거나, 일련의 예측등을 수행합니다.지도 학습 vs 비지도 학습지도학습은..

AI 2024.12.05

프로그래밍 영어 단어 공부

프로그래머를 위한 영어 표현: tailored와 dedicated의 이해안녕하세요! 😊 오늘은 프로그래머들이 프로그래밍 서적이나 기술 문서를 읽다가 자주 접하는 표현들인 tailored와 dedicated에 대해 알아볼게요. 특히 프로그래밍에서 이 두 단어는 특정한 용도나 목적에 맞춘다는 뉘앙스를 담고 있어요. 이 글에서는 이 두 표현의 의미와 차이점, 그리고 활용 사례를 소개하겠습니다.1. TailoredTailored는 "특정 요구나 상황에 맞게 조정된" 이라는 뜻이에요. 본래 "재단하다"라는 뜻에서 유래한 단어로, 프로그래밍에서는 특정 도메인(domain)이나 목적에 맞춰 수정되거나 조정된 모델, 시스템, 코드 등을 설명할 때 사용됩니다.주요 특징:맞춤형특정한 요구사항을 반영유연성과 변화 가능성예..

영어공부 2024.11.20

[JavaScript 공부용] Webworker 다뤄보기

WebWorker?웹 프론트 엔드 프로그래밍이나 모바일 프로그래밍을 하다보면 기존 메인 스레드로 UI 를 렌더링 하기 때문에 백그라운드에서 워커 혹은 다른 스레드를 통해 부가 작업들을 진행한다. MDN 공식문서에도 나와 있듯이 웹에서는 Web Worker 가 그 일을 한다. 알아보기Worker 는 지정한 javascript 파일을 런타임 환경에서 실행시킬수 있다. MDN 공식문서에 따르면 Worker 를 생성하는 방법은 아래와 같다. `import.meta.url` 은 번들러에 의해 위치가 꼬일수도 있으니 넣으라고 한다.const myWorker = new Worker(new URL("worker.js", import.meta.url)); Worker 안에서 대부분의 코드가 실행 가능하나 몇가지 목적을 ..

JavaScript 2024.11.20

만들면서 배우는 Https 서버 시리즈 2

지난번 시리즈에서는 간단하게 인증서를 이용한 Https 서버를 구축하는 작업을 진행했었다.https://devroach.tistory.com/185 만들면서 배우는 Https 서버 시리즈 1개요요즘 유행하는 Cursor editor 를 써볼겸 사이드에서 간단하게 코드짤때 많이 이용하는 Go 언어를 통해 Https 가 어떻게 동작하는지 가볍게 실습겸 정리하기 위해 직접 코드를 작성하며 정리해보devroach.tistory.com오늘은 지난 글의 마지막에 남아있던 질문인 Server 에서 암호화된 응답을 주면 개인키(private key) 가 없는 클라이언트는 어떻게 복호화하지? 라는 질문을 해결하기 위해 TLS Handshake 과정에 대해 알아보려고 한다.TLS Handshake그림을 보면 첫번째로 TC..

Go 2024.11.07

만들면서 배우는 Https 서버 시리즈 1

개요요즘 유행하는 Cursor editor 를 써볼겸 사이드에서 간단하게 코드짤때 많이 이용하는 Go 언어를 통해 Https 가 어떻게 동작하는지 가볍게 실습겸 정리하기 위해 직접 코드를 작성하며 정리해보았다. 막상 이런 자료들 볼때 실습으로 할수 있는 코드들은 많이 없고, 이론적인 자료만 너무 많아서 정말 아쉽다.Https 란?Https 는 Http 와 다른 프로토콜로 인터넷 통신간 TLS/SSL encryption 을 이용하여 더 안전하게 데이터를 주고 받기 위한 하나의 프로토콜이다. 쉽게 예시를 들기 위해 아래 그림을 한번 보자.HTTP 를 사용하게 되면 인터넷 통신간 전송되는 데이터를 평문(Plain-text) 형태로 보내게 된다. 이때 패킷을 가로채는 Packet Sniffers 이 있으면 그대..

Go 2024.11.06

[LEETCODE - 15] Container With Most Water 풀이

문제파악 문제는 그래프 내에서 높이(height) 를 알수 있는 배열 `heights` 가 주어졌을때, 위 그림과 같이 주어진 그래프에서 가장 많은 물을 차지할수 있는 컨테이너를 찾는 것 이다. 일단 가장 간단하게 생각해보았을때, 물의 면적을 구하는 공식은 아래와 같이 구할수 있을 것 이다. Calculate Volume Using MathJax 컨테이너의 용량구하기 공식: \( \text{Volume} = \text{Width} \times \text{Height} \) ">HTML 삽입미리보기할 수 없는 소스생각해보면 우리는 이미 받은 height 배열을 통해 그래프내 막대들의 높이는 이미 알고 있는 상태이다.heights = [1,8,6,2..

Algorithm 2024.11.06

돌연변이 테스트(Mutation Testing)

발단 책 Effective testing 을 보다가 돌연변이 테스트(Mutation testing) 이라는 키워드를 발견했다. 돌연변이 테스트라는 키워드를 발견한 후 키워드가 궁금해서 찾아보게 되었고, 바이트 코드를 조작하여 기존 테스트 케이스들로 인해 "죽은 돌연변이" 들 혹은 "살아남은 돌연변이들", "실행조차 안된 돌연변이" 들 등의 수치들이 있었다. 이 모든 수치들을 보면서 이 수치가 무엇을 의미하는가에 대한 궁금함이 생겼고, 그렇다면 이 돌연변이들의 생사 지표가 어떻게 프로덕션 코드의 퀄리티를 측정할 수 있지? 라는 궁극적인 의문이 생겼다. 개념 기본적으로 Mutation testing 이 동작하는 방식을 설명하자면 기본적으로 바이트 코드를 조작하는 몇가지 동작(Operation) 들이 존재한다..

Java 2024.03.25
728x90