전체 글
-
생일 문제 : 더 계산이 쉬운 방법을 찾기Math♾️/Probability Statistics🎲 2025. 3. 10. 22:30
생일 문제방에 n명의 사람이 있을 때, 적어도 두 사람(한 쌍)이 같은 생일을 가질 확률이 50% 이상이 되려면 n은 얼마나 커야 할까요?많은 사람들이 직관적으로 "365의 절반인 약 182명 정도는 있어야하지 않을까 생각합니다." 그러나 실제 답은 이것보다 훨씬 작습니다. 왜 그럴까요? 우선 n명의 사람들 사이에 가능한 모든 비교 횟수를 계산해 봅시다. 각 사람이 다른 모든 사람과 생일을 비교한다면:첫 번째 사람은 n-1명과 비교 ( 자신을 제외한 나머지 사람)두 번째 사람은 n-2명과 비교 (첫 번째 사람과 자신을 제외한 나머지 사람)세 번째 사람은 n-3명과 비교 (첫 번째, 두번째 사람과 자신을 제외한 나머지 사람) ...이 합계는 가우스의 공식을 사용하면 n(n-1)/2가 됩니다. 예를 들어,..
-
가능성에 어떻게 숫자를 부여할까?Math♾️/Probability Statistics🎲 2025. 3. 9. 14:05
우리는 일상에서 "비가 올 가능성이 80%다", "이 치료법이 효과가 있을 가능성은 60%다"처럼 확률적 표현을 자주 사용합니다. 이런 표현들은 불확실한 사건에 정확한 숫자값을 부여함으로써 의사결정에 도움을 줍니다. 그런데 이러한 숫자는 어떤 원칙에 따라 부여되는 걸까요?표본 공간: 가능한 모든 결과들의 집합확률을 논하기 위해 가장 먼저 필요한 개념은 표본 공간(Sample Space)입니다.이는 쉽게 말해 '일어날 수 있는 모든 결과들의 모음'입니다. 예를 들어, 동전을 한 번 던지는 실험에서 표본 공간은 {앞면, 뒷면}이고, 주사위를 한 번 던지는 실험에서 표본 공간은 {1, 2, 3, 4, 5, 6}입니다. 동전을 세 번 던지는 실험에서는 표본 공간이 {HHH, HHT, HTH, HTT, THH, ..
-
순열, 조합 : 똑똑하게 세는 방법Math♾️/Probability Statistics🎲 2025. 3. 8. 23:09
확률 계산의 본질: 경우의 수를 세다. 기본적으로 확률은 '특정 사건이 발생할 수 있는 방법의 수'를 '가능한 모든 경우의 수'로 나누어 계산합니다.그러나 문제가 복잡해질수록(예: 10번의 동전 던지기, 포커 패 등) 모든 경우를 일일이 나열하기 어려워집니다.이때 조합론은 가능한 모든 경우의 수를 효율적으로 세는 방법을 제공합니다.몇 가지 기본적인 계산 공식만 알아도 포커, 주사위 게임, 백개먼 등 다양한 게임의 확률을 쉽게 계산할 수 있습니다.동전 던지기첫 번째 예제로, 동전을 10번 던질 때 가능한 모든 고유한 순서의 수를 계산해 봅시다.여기서 중요한 개념은 순서가 중요하다(order matters)는 것입니다.즉, '앞면-뒷면'과 '뒷면-앞면'은 서로 다른 결과로 간주됩니다.각 동전 던지기에는 2..
-
List와 ScrollView+LazyVStack 비교하기Apple🍎/SwiftUI 2025. 3. 7. 00:04
List + TextEditor 리스트 내부 셀 안의 텍스트에디터에 내용이 많아지면 내부 스크롤이 활성화됨 ( 텍스트 에디터 크기도 살짝 늘어남 )ScrollView + LazyVStack + TextEditorLazyVstack 셀 안의 텍스트 에디터에 내용 있는 많아지면 그에 맞춰 텍스터 에디터 크기가 증가함 SwiftUI에서 List와 ScrollView+LazyVStack 조합이 TextEditor와 함께 작동할 때 다른 동작을 보이는 이유가 뭘까요?List와 ScrollView+LazyVStack의 기본적인 차이점List의 동작 방식List는 UITableView를 기반으로 한 컴포넌트로, 고정된 셀 높이나 자동 계산된 높이를 사용합니다. List는 내부적으로 콘텐츠의 크기를 미리 결정하고,..
-
큐와 덱 : 순서대로 처리하기DS & Algorithm 2025. 3. 6. 22:09
큐 초기 상태: [A, B, C, D, E, _, _, _] ^ ^ front reardequeue 후: [_, B, C, D, E, _, _, _] ^ ^ front rear 지난 시간에는 '해시 테이블'에 대해서 알아보았지요. 해시 테이블은 해시 함수를 이용해 키를 인덱스로 변환함으로써 O(1)의 시간 복잡도로 빠른 검색이 가능해졌어요.그리고 서로 다른 키에 대해 같은 인덱스 값이 나오는 '충돌'이 생겼을 때 체이닝이나 개방 주소법등의 기법을 통해 대용량의 데이터를 효율적으로 관리할 수 있게 되었어요. 해시 테이블 : 빠르게 데이터 검색하기자료구조 세번..
-
해시 테이블 : 빠르게 데이터 검색하기DS & Algorithm 2025. 3. 5. 21:01
자료구조 세번 째 주인공은 해시 테이블 입니다. ~~ 지난 시간에는 '링크드 리스트'에 대해서 알아보았지요. 링크드 리스트 : 메모리 알뜰하게 사용하기빙글빙글 돌아가는 짱구의 하루~~ 자료구조 시리즈 두 번째는 바로 '링크드 리스트'입니다. 지난 시간에는 '동적 배열'에 대해서 알아보았습니다. 동적 배열은 '콜 스택 구조상 컴파일 전에people-analysis.tistory.com동적 배열을 사용하기 위해서는 '연속된 메모리 블록'이 필요하다는 제약'을 링크드 리스트는 각 노드가 다음 노드를 가리키는 포인터를 사용함으로써 해결했어요. 그렇다면 오늘 주인공 '해시 테이블'은 뭐 때문에 필요하게 되었는지 살펴봅시다. 레츠 기딧 ~~~ 배열과 링크드 리스트의 한계배열과 링크드 리스트는 각각의 장점을 ..
-
링크드 리스트 : 메모리 알뜰하게 사용하기DS & Algorithm 2025. 3. 4. 22:50
빙글빙글 돌아가는 짱구의 하루~~ 자료구조 시리즈 두 번째는 바로 '링크드 리스트'입니다. 지난 시간에는 '동적 배열'에 대해서 알아보았습니다. 동적 배열은 '콜 스택 구조상 컴파일 전에 메모리 양이 정해져야 하는 한계'를 힙을 사용해 런타임에 메모리를 결정할 수 있게 해 줌으로써 해결해 줬지요?덕분에 우리는 사용자의 입력, 입,출력되는 파일 등 프로그램이 실행될 때 결정되는 것들을 유연하게 저장할 수 있게 되었어요. 동적 배열: 스택의 한계를 넘어서자료구조, 알고리즘 중요하다고들 하지만아직까지 앱을 구현할 때 해당 개념들이 엄청나게 도움이 된 적이 없다 보니 필요성을 못 느꼈는데요. ( 기업들에서 코딩 테스트를 요구하니 공부를people-analysis.tistory.com 그렇다면 링크드 리..