개발자 이야기 20

모집단과 표본집단

모집단(population) 여론조사나 인구 조사를 할 때, 대상이 되는 모든 사람에 대해서 조사를 하면 제일 정확할 것입니다. 하지만 물리적, 시간적으로 그렇게 하지 못하는 경우가 많습니다. 예를 들어, "대한민국 사람들의 평균 키"에 대해서 조사를 해보고 싶다고 합시다. 그러면 대한민국 전체 사람들의 키를 조사해야하는데 이것은 불가능에 가깝습니다. 위 예제에서 모집단은 무엇이 될까요? 바로 "대한민국 전체 사람"이 될 것입니다. 즉, 연구자가 알고싶어하는 대상 전체를 가리켜서 "모집단"이라고 합니다. 다른 예로, A고등학교의 대학 진학률을 조사해보고 싶다고 하면, "A고등학교의 고3 학생 수"가 모집단이 될 것입니다. 다른 학교가 포함되면 안 되겠지요? 연구자는 "A고등학교"로 한정해서 진학률을 알고..

Statistics 2023.07.15

[docker] docker compose vs docker-compose

개요 docker-compose를 사용해야할 일이 있었는데요, command에 --profile 옵션을 사용하도록 되어있었습니다. 더구나 docker compose와 같이 하이픈이 없이 docker 명령어의 하위 커맨드로 사용하도록 되어있었습니다. 이번에 이 둘 차이를 확인해보고, --profile 옵션을 사용할 수 있는 docker-compose를 설치하는 방법을 간단히 메모해둡니다. docker compose 공백으로 구분된 위 커맨드는 Docker desktop에서 처음 소개되었고, desktop에서만 사용할 수 있는 커맨드입니다. 과거 docker-compose를 go로 다시 개발하여 v2로 새롭게 릴리즈되었습니다. docker-compose 파이썬 기반으로 작성된 원래 docker-compose..

Etc 2023.07.12

기술통계와 추리통계

기술통계(Descriptive Statistics) 어떤 대상이나 내용을 설명할 때 "기술한다"라고 합니다. 연구자가 모은 데이터에 대해 통계적으로 어떤 특성을 가지고 있는지 설명할 때 사용하는 통계이론이라고 할 수 있습니다. 여론 조사를 예를 들면, 대한민국 전체 인구를 대상으로 조사를 할 수는 없을 것입니다. 그래서 보통은 일부 집단을 선정하고 조사를 한 다음 결과를 발표합니다. 이때, 일부 집단은 어떻게 선정을 할까요? 어떤 기준에 의해서 선정되었다고 가정합시다. 그렇다면 선정된 집단이 과연 전체 집단의 특성을 대표한다고 할 수 있을까요? 이런 질문에 타당한 근거를 제시하기 위해서는 선정된 집단의 특성을 통계적으로 분석할 필요가 있습니다. 가장 쉽게 접할 수 있는 것이 "분포"입니다. 여론 조사를 ..

Statistics 2023.07.11

[Error] cusolverDn.h: No such file or directory

현상 deepspeed를 통해, 모델을 변환하는 도중에 아래와 같이 헤더 파일을 못찾는 현상이 발생 /home/bc-user/.conda/envs/elo/lib/python3.8/site-packages/torch/include/ATen/cuda/CUDAContext.h:10:10: fatal error: cusolverDn.h: No such file or directory #include ^~~~~~~~~~~~~~ compilation terminated. 해결 소스 컴파일을 할 때, 헤더 파일의 위치를 찾지 못해서 발생하는 오류이므로, 헤더파일을 찾도록 해줍니다. 근본적으로는 패키지 등 설치를 깔끔하게 해야하나, 우선은 헤더 파일의 위치를 설정해주는 옵션을 찾아서 해결합니다. #[step1] fin..

Etc 2023.07.11

개발자용 폰트(Bitstream Vera Sans Mono)

개발자용 폰트는 fixed width가 중요합니다. 동일한 문자 수 인데, 각 문자마다 폭이 다르다면 들쑥날쑥한 모양으로 코드가 작성됩니다. 윈도우 프로그래밍을 한창 할때는 Fixedsys를 사용했었는데, 언제부턴가 Bitstream이라는 폰트를 사용하게 되었습니다. 최근에 맥북을 새로 세팅하게 되어서 해당 폰트를 설치했는데, 기록 차원에서 남겨둡니다. 깔끔하니, 가독성도 좋아서 개발자분들에게 추천드립니다. 맥에서 설치할때에는 아래 파일을 다운로드 받은 후 그냥 더블클릭하면 서체에 등록이 됩니다.

Etc 2023.06.10

백준 / 1026 / 보물

문제 https://www.acmicpc.net/problem/1026 a, b 두개의 배열이 있을 때, 같은 위치에 있는 값을 서로 곱했을 때 나오는 값이 최소가 되도록 a배열의 원소를 재배열 하는 문제 접근방식 a,b 두 배열은 0이거나 100이하의 자연수로만 구성된다. answer = (a[i] * b[i]) + ... + (a[N-1] * b[N-1]) 이 최소가 되는 수를 구하자. 가장 쉽게 생각하면, a배열은 오름차순으로, b배열은 내림차순으로 정렬 후 서로 곱해주면 항상 최소가 된다. b배열은 재배열 하지 말라는 조건때문에 좀 헷갈렸는데... (체크할 수도 없는 조건이 왜 들어가 있는지...) (풀이) 1 #include 2 #include 3 #include 4 5 using namespa..

Algorithm/Greedy 2023.03.08

백준 / 11047 / 동전 0

문제 https://www.acmicpc.net/problem/11047 금액이 다양한 화폐가 있다고 했을 때, 특정 금액을 구성하기 위해 필요한 가장 최소 화폐개수를 구해보자. 예) 1000원은 100원짜리 10개도 되지만, 500원짜리 1개도 되고, 1원짜리 1개도 된다. 접근 방식 금액을 화폐단위로 나눈 몫이 그 개수이므로, 이것을 계속 더해나간다. 단 가장 큰 단위의 화폐단위부터 적용해야하므로, 오름차순 정렬되어있으므로, 가장 뒤에있는 단위부터 차례대로 나눠서 몫을 더한다. 그리고, 다음 단계에서는 이전에 카운트된 금액만큼 제외하고 다시 나누어야 하므로 나머지 연산자를 통해서 다음에 사용할 금액을 구한다. ex) 100원, 500원, 1000원이 있다고 했을 때, 2300원을 가지고 생각해보자. ..

Algorithm/Greedy 2023.03.03

백준 / 11399 / ATM

문제 https://www.acmicpc.net/problem/11399 ATM앞에서 N명의 사람이 돈을 인출하는데 각각 pi의 시간이 걸린다. 당연히, 짧은 시간을 소비하는 사람부터 줄을 서서 처리하면 전체 걸리는 시간이 최소가 될 것이다. 이 최소 시간을 구하라. 접근방식 N명의 사람에 대해서 소비시간을 정렬한 후, 누적된 시간을 다 더하면 된다. (풀이) 1 #include 2 #include 3 4 using namespace std; 5 int main() 6 { 7 int N, i; 8 int time[1000]; 9 int acc = 0; 10 int answer = 0; 11 cin >> N; 12 13 for (i = 0 ; i > time[i]; 16 } 17 sort(time, tim..

Algorithm/Greedy 2023.03.02

백준 / 2839 / 설탕 배달

문제 https://www.acmicpc.net/problem/2839 N kg의 설탕을 배달하기 위해, 3kg, 5kg을 담을 수 있는 주머니를 사용할 수 있다. 운반에 필요한 최소 주머니 개수를 구하라 ex) 18kg의 경우 3kg 6개도 되고 5kg 3개, 3Kg 1개 총 4개도 가능하다. 접근 방식 그리디 방법이라고 해서, 일단 모든 경우의 수를 다 탐색을 해야겠다고 생각했습니다. 그래서 쉽게 구현할 수 있는 재귀 호출을 이용해서, 3kg, 5kg일때 각각 경우의 수에 대해서 조사를 합니다. (풀이1) 1 #include 2 #include 3 4 #define P1 3 5 #define P2 5 6 7 void find(int N, int depth, int *answer) 8 { 9 if (d..

Algorithm/Greedy 2023.02.28

알고리즘 공부 순서 / 계획

공부 순서 [Python/C++ 기본 문법 → 코드업 기초 100제 → BOJ 그리디/탐색 유형 문제 풀이 → 특정 기업 대상의 기출 문제 풀이] 계획 1. 코드업 기초 100제 : ~ 2023.3.10 2. Greedy : 3. Search : 4. Dynamic programming : 참고사이트 - 코드업: http://codeup.kr/ - BOJ: https://www.acmicpc.net/ - 프로그래머스: https://programmers.co.kr/ - 백준 : https://www.acmicpc.net/ - 리트코드 : https://leetcode.com/

Algorithm 2023.02.28