본문 바로가기
반응형

전체 글613

너와 나의 생일이 같을 확률은? 생일 문제(Birthday Problem) 생일 문제란?N명이 있을 때, 두 명 이상이 같은 생일을 가질 확률을 구하는 문제이다. 이제, 1년 365일 중에서 N명이 생일을 랜덤 하게 가질 때, 같은 생일이 발생할 확률을 구한다.M = 가능한 생일 개수 (1년 365일)N = 사람 인원수회사에 팀원이 한 사람씩 새로 들어왔을 때 생일이 같을 확률을 구한다고 생각하면 이해가 빠르다.생일 문제 공식두 명 이상이 같은 생일을 가질 확률을 계산하는 공식은 다음과 같다.우선, 생일이 중복되지 않을 확률을 곱해주고 1을 빼주면 우리가 원하는 생일이 중복될 확률을 얻을 수 있다.(*이는 여사건의 확률(Complement Rule)이라고 한다.)또는 지수 함수 근사 공식을 사용하여:N = 사람 수 (생일을 가지는 사람의 수)M = 가능한 생일 개수 (365일).. 2025. 2. 7.
자연 상수 e에 대해서 알아보자 e는 어디서 나왔을까?e는 지수 성장(Exponential Growth)을 나타내는 숫자이다.쉽게 말해 '어떤 것이 계속 증가할 때 그 증가율이 일정하면, 그 성장이 e를 따른다.'라고 이해할 수 있다. 일단 정의만 읽어서는 전혀 감이 오지 않는다. 예를 들어보자.💰 e가 등장하는 실생활 예제예제 : 100원을 투자했을 때, 복리 이자가 붙는 경우은행에서 연이율 100%로 돈을 맡긴다고 가정해 보자.즉, 1년 이후에는 원금의 2배(200원)가 된다.하지만  이자를 한 번만 주는 것이 아니라, 더 자주 주면 어떻게 될까? 이자를 1년에 한 번만 받는 경우 (단리)원금 + 이자 = 100 + (100 * 1) = 200 이자를 1년에 두 번 주는 경우 (반년마다 50% 이자)1차 : 100 + (100 *.. 2025. 2. 6.
줄 끝 스타일(Line Ending Style) - 윈도우 스타일 vs 리눅스 스타일 줄 끝 스타일(Line Ending Style)줄 끝(라인 엔딩, Line Ending) 스타일은 운영체제(OS)에 따라 다르게 처리될 수 있다. 이에 대해서 알아보자.1. 윈도우 스타일 / 도스(DOS) 스타일 (CRLF, \r\n)CRLF는 Carriage Return( /r ) + Line Feed( \n )을 의미한다.윈도우에서는 줄 바꿈을 할 때 두 개의 문자를 사용해서 줄 끝을 나타낸다.예를 들어, 메모장 같은 기본 텍스트 편집기에서 줄 바꿈을 보면 CRLF를 사용한다.2. 리눅스 스타일 / 맥 스타일 (LF, \n)LF는 Line Feed( \n )만 사용하는 걸 의미한다.유닉스 기반 시스템(리눅스, macOS)에서는 줄 끝을 나타낼 때 단일 문자 LF를 사용한다.터미널에서 cat, vim,.. 2025. 2. 6.
리눅스(Linux) IPC의 종류에 대해서 알아보자 IPC(Inter-Process Communication)어떤 프로그램은 다른 프로그램과 상관없이 독립적으로 작동하고, 어떤 프로그램은 다른 프로그램과 상호작용하며 작동한다. 또 어떤 프로그램은 하나 이상의 프로세스를 실행하기도 한다. 여러 프로그램이 문제없이 작동하려면 프로세스 간 데이터 교환이나 이벤트 발생을 알릴 수단이 필요하다. 이렇게 프로세스 간 통신에 사용하는 도구를 IPC(Inter-Process Communication)라고 한다. 리눅스에서 제공하는 IPC의 종류와 특징에 대해서 알아보자.파이프(Pipe)파이프(pipe)는 두 프로세스 간 데이터를 전송할 떄 사용하는 IPC다. 파이프는 데이터를 단방향으로만 전송할 수 있다. 한 프로세스가 데이터를 파이프에 쓰면 다른 파이프가 파이프에서 .. 2025. 2. 4.
리눅스(Linux) 포어그라운드 프로세스와 백그라운드 프로세스 포어그라운드 프로세스와 백그라운드 프로세스리눅스는 프로세스를 실행하는 방식에 따라 포어그라운드(foreground) 프로세스와 백그라운드(background) 프로세스로 구분한다. 둘을 나누는 가장 큰 기준은 프로그램과 사용자 간 인터페이스이다.  셸은 한 프로그램을 실행하면 그 프로그램이 종료돼야 다음 명령을 실행한다. 실행 시간이 짧은 프로그램은 별다른 문제가 없다. 사용자와 상호작용이 필요한 프로그램도 문제없다. 하지만 사용자와 상호작용이 필요하지 않고, 실행 시간도 긴 프로그램이라면 어떨까? 셸은 해당 프로그램이 종료될 때까지 대기해야 한다. 그리고 프로그램이 종료되기 전까지 다른 작업을 수행하지 못한다. 포어그라운드 프로세스는 사용자와 상호작용이 기본이기 때문에 사용자 입력을 받을 수 있다. 사.. 2025. 2. 4.
127.0.0.1 vs 0.0.0.0 vs localhost 차이점 정리해보자 127.0.0.1(루프백 주소, Loopback Address)자기 자신을 가리키는 IP 주소로, 루프백 주소라고 부른다.네트워크 인터페이스를 거치지 않고 자신의 로컬 네트워크 스택을 통해서만 통신한다.물리적인 네트워크 인터페이스 카드(NIC)를 사용하지 않으며, 소프트웨어적으로만 처리된다.사용 목적네트워크 프로그램 개발 및 테스트 (예: 웹 서버, 데이터베이스 서버 등)자기 자신과의 네트워크 연결 테스트0.0.0.0(와일드카드 주소, Wildcard Address)일반적으로 모든 네트워크 인터페이스를 의미하는 주소로 사용된다.특정한 네트워크 인터페이스에 국한되지 않고, 모든 사용 가능한 네트워크 인터페이스를 의미한다.서버가 바인딩(bind)될 때, 모든 IP 주소에서 들어오는 요청을 수락하도록 설정할 .. 2025. 1. 31.