본문 바로가기

분류 전체보기63

프로그래밍 언어에서의 나눗셈과 나머지 연산 차이 우리가 수학에서 정수 나눗셈과 나머지(modular) 연산을 다룰 때는, 나머지가 0 이상인 정수이다. 하지만 프로그래밍 언어에서는 이러한 연산이 언어마다 다르게 정의되며, 그 차이는 특히 음수 연산에서 두드러진다. 이로 인해 프로그램이 의도와 다르게 동작할 수 있으므로, 정확한 이해가 필요하다.1. 사례: C++ vs PythonC++int a = -5 / 2; // 결과: -2int b = -5 % 2; // 결과: -1Pythona = -5 // 2 # 결과: -3b = -5 % 2 # 결과: 1둘 다 -5 ÷ 2를 계산하는 코드지만, 결과는 다르다.2. 핵심 차이: 몫 연산의 방향성과 나머지의 부호나눗셈을 수행할 때 소수점 이하의 값을 어떻게 처리하느냐에 따라 이러한 차이가 발생한다.C+.. 2025. 5. 11.
Julian Day Number (율리우스 적일) 특정 일자로부터 경과한 일 수우리는 일반적으로 날짜를 “2025년 5월 5일”과 같이 연, 월, 일로 표현한다. 하지만 D-day를 계산하거나 특정 날짜의 요일을 알고자 할 때는, 연·월·일 정보를 그대로 다루기보다, 기준일로부터 며칠이 경과했는지를 수치로 계산하는 것이 훨씬 편리하다.예를 들어, 2025년 어린이날(5월 5일)과 크리스마스(12월 25일) 사이의 날짜 차이를 계산한다고 해 보자. 기준일을 2025년 1월 1일로 두었을 때, 어린이날은 124일째, 크리스마스는 358일째이다. 두 날짜의 차이는 단순히 358 - 124 = 234일이다.또한 요일 계산도 쉽게 할 수 있다. 2025년 1월 1일이 수요일이고, 크리스마스가 그로부터 358일 후라면, 358 ÷ 7 = 51...1 이므로 1일 .. 2025. 5. 8.
Digit Root 어떤 숫자 num에 대해 아래 과정을 취했을 때 나올 수 있는 값을 구해보자.각 자리의 숫자들을 다 더한다.만약 다 더한값이 한자리 수라면 이 수를 반환한다.두자리 수 이상이라면 그 수에 대해 다시 1부터 수행한다.예를 들어 12345 의 경우 아래의 과정을 거쳐 6이된다.1 + 2 + 3 + 4 + 5 = 151 + 5 = 6이떄 6은 15의 10진수 digit root이다.다음과 같이 작성하기도 한다.$$dr_{10}(15) = 6$$위 값을 구하는 Leetcode 문제도 존재한다.(https://leetcode.com/problems/add-digits/description/)Digit root 를 구하기 위해 코드를 작성할 때 반복문 혹은 재귀를 사용하는 방법이 먼저 생각날 것이다.아래의 코드는 .. 2025. 1. 3.
ADsP 합격 (예정) 후기 ADsP를 응시할 생각은 입사 전까지만 해도 없었다. 자격증을 가지고 있으면 취업이나 기타 활동에 마이너스는 되지 않을 수 있으나 대회나 공모전 활동만큼 큰 메리트가 있다고 생각하지 않았기 때문이다. 당시엔 학생이었기 때문에 응시료 5만 원이 아깝기도 하였다.입사 후 사내에서는 DX 노래를 부르고 있었다. 더 나은 고객경험을 위해, 업무 프로세스 개선을 위해, 원가 절감을 위해, 회사에서 할 수 있는 거의 모든 것을 DX기반으로 하겠노라고 신입사원 교육 때부터 지금까지 무수히 들어왔다. (사내에서는 DX를 디지털 전환보다는 데이터 쪽에 더 비중을 둔 용어로 사용하고 있었다.) 이 때문인지 임직원 대상으로 몇 단계로 나누어진 사내 관련 역량인증 시험이 있었으며, 일정 단계 이상을 취득해야 승진이 가능했다... 2024. 6. 3.
Disjoint Set (Union find) Disjoint set이라고도 하고 union find라고도 하는 이 방법은 어느 두 집합을 합치고, 어느 두 요소가 같은 집합에 존재하는지 빠르게 알 수 있게 하는 방법이다. Disjoint Set은 아래 두 연산을 구현한다. union(a,b)는 a가 속한 집합과 b가 속한 집합을 합치는 연산이다. find(a)는 a가 속한 집합을 반환하는 연산이다. 아래는 위 두 연산을 사용하였을 때의 예제이다. 1~5의 요소가 있다고 하자. 각 요소는 초기에 서로 다른 집합에 속한다. (1), (2), (3), (4), (5) 1이 속한 집합과 2가 속한 집합을 합치자. : union(1,2) 결과 : (1,2), (3), (4), (5) find(1) == find(2)는 true이어야 한다. find(2) =.. 2023. 5. 1.
삼성 DX 동계 대학생 SW 알고리즘 역량 강화 특강 후기 이번 동계 방학에는 삼성 Dx 부문에서 운영하는 "대학생 SW 알고리즘 역량강화 특강"을 수강하였다. 4학년 올라가는 겨울방학, 계절학기가 끝나고 잠깐 무료하던 차에 어떤 내용을 얻어 갈 수 있는지 호기심에 신청했었다. 코딩테스트 입과를 위한 코딩테스트가 존재하였다. 5일의 기한동안 두개의 문제를 푼다. 사전 문제의 난이도는 SW Expert Academy (이하 SWEA) 의 문제들 중 D2~D4 에 해당한다고 한다. 나는 문제가 나온 첫날 아침에 두 문제를 모두 풀고 결과를 기다렸다. 그리고 풀이 기간이 끝나고 얼마 뒤 받은 이메일에는 교육생으로 선정되었다는 내용이 적혀있었다. 몇 문제를 풀어야 합격인지 궁금하였는데, SWEA에 올라온 글들을 보니 두 문제를 모두 풀어도 교육생으로 선정되지 않은 경우.. 2023. 3. 18.
Binary Heap (이진 힙) 힙은 아래 성질을 만족하는 Alomost complete binary tree이다. Max heap의 경우 parent node의 값은 child node의 값보다 크거나 같다. Min heap의 경우 parent node의 값은 child node의 값보다 작거나 같다. 아래의 모든 설명은 Max heap을 기준으로 한다. Max heap의 경우 tree 내의 모든 노드에 대해 parent node의 값은 child node의 값보다 작지 않다. 그래서 Max heap에선 root node의 값이 가장 크다. 값을 삽입하고 뺄 때도 이 성질을 유지하면 root에서는 항상 tree 내의 가장 큰 값이 존재하게 된다. Cpp의 priority queue를 사용해 본 적이 있는가? 어떤 값을 priority.. 2023. 1. 31.
Binary Search, 이진탐색 정렬된 배열에서 특정 값의 위치 찾기 아래의 정렬된 배열에서 6을 찾는다고 하자. ---------- 0123456789 지금은 배열 전체가 탐색 범위이다. 여기서 중앙에 있는 값과 목표로 하는 값(6)을 비교해 보자. 중앙에 있는 값은 index가 4인 값이다. floor((0 + 9)/2) = floor(4.5) = 4, arr[4] target 임으로 i.. 2023. 1. 6.
Metrics - Accuracy, Precision, Recall and F1-Score Accuracy (정확도), Precision(정밀도), Recall (재현율) 그리고 F1 Score는 Classification을 수행한 모델이 잘 동작하였는지 확인하기 위한 척도입니다. Confusion Matrix 예측값 Positive 예측값 Negative 실제값 Positive TP FN = Type II error 실제값 Negative FP = Type I error TN 우선 TP, FN, FP, TN에 대해 먼저 알아봅시다. 이 값들은 실제 참혹은 거짓인 값들에 대해 몇 개를 정확히 예측하였는지, 그렇지 않았는지 알려줍니다. TP, FN, FP, TN 값의 의미는 아래와 같습니다. TP : Positive라 예측한 것중 맞은 것 FP : Positive라 예측한 것중 틀린 것 TN :.. 2022. 10. 2.
Entropy, Information Gain 그리고 Decision Tree Entropy 정보이론에서 Entropy는 어떤 확률 p를 가진 정보를 전송하는 데에 필요한 비트 수의 평균값입니다. 예를 들어 동전을 던졌는데 앞면이 나왔는지, 뒷면이 나왔는지를 상대방에게 알려주려고 합니다. 2가지의 경우밖에 존재하지 않음으로 1bit (0, 1)로 나타낼 수 있습니다. 두 경우의 확률 값이 0.5 임으로 0.5*1 + 0.5*1 = 1로 엔트로피는 1입니다. 그런데 이는 동전의 앞면과 뒷면이 나올 확률이 둘 다 1/2이라는 가정하에 일어나는 일입니다. 만약 던졌을 때 앞면만 나오는 동전이 있다면 불확실성은 존재하지 않습니다. 이 경우 엔트로피는 0입니다. 엔트로피는 문제의 복잡도를 측정하는 척도이며, 클수록 불확실성이 높으며 문제가 복잡합니다. 엔트로피는 아래와 같이 정의됩니다. $.. 2022. 10. 1.