Journey to CS 60

[이산수학] 조합이론 - Part 2. 중복 집합에서의 순열

중복된 원소를 포함하는 집합에서는 순열을 어떻게 구할까? 중복된 원소를 포함하는 집합에서 순열을 구하는 방법은 일반적인 순열 공식을 약간 확장하여 이해할 수 있다.지난 글(조합 Part 1.)에서 살펴보았듯, 서로 다른 원소 n개를 모두 일렬로 배열하는 경우의 수는 n!이라는 것은 이미 알고 있다. 하지만 집합 안에 동일한 원소가 여러 개 존재한다면, 단순히 n!로 계산하는 것은 중복을 포함한 결과를 만들어내므로 적절하지 않다.중복된 원소들끼리 자리를 바꿔도 전체 배열이 같기 때문이다.예를 들어, 다음과 같은 문자 집합을 생각해 보자. {A, A, B} 이 세 문자를 일렬로 배열하는 경우의 수를 생각하면,겉보기에는 3개의 문자를 배열하므로 3! = 6 가지가 있을 것 같지만,여기서 두 개의 A의 위치를 ..

[이산수학] 행렬의 종류와 특징

이산수학에서는 다양한 형태의 행렬이 등장한다. 각각의 행렬은 특정한 구조를 가지며, 그 구조에 따라 계산이나 해석에 용이한 특성을 갖는다. 대표적인 행렬의 종류들을 살펴보자. 1. 정방행렬 (Square Matrix)정의: 행(row)의 수와 열(column)의 수가 같은 행렬을 정방행렬이라고 한다.특징: n×n 형태로 나타난다. 정방행렬은 대각선, 역행렬, 행렬식 등을 논의할 수 있는 기본 구조이다.예시:2. 대각행렬 (Diagonal Matrix)정의: 정방행렬 중에서 주대각선 이외의 모든 원소가 0인 행렬을 대각행렬이라고 한다.특징: 대각선의 값만 의미가 있으며, 행렬 곱이나 거듭제곱 계산이 간단하다.예시:3. 단위행렬 (Identity Matrix)정의: 대각행렬 중에서도 모든 주대각선 원소가 1..

[이산수학] 집합의 서로소, 분할, 멱집합 개념

📌 1. 서로소 집합 (Disjoint Sets)정의:두 집합이 공통 원소를 전혀 갖지 않으면, 서로소(disjoint)라고 한다. 예시:A={1,2,3}, B={4,5}공통 원소 없음 → 서로소C={2,3}, D={3,4}공통 원소 {3} 있음 → 서로소 아님 📌 2. 집합의 분할 (Partition)정의:어떤 집합 A를 겹치지 않는 부분집합들로 나누되, 그 부분집합들을 모두 합치면 원래의 집합 A가 되는 경우, 이를 분할이라 한다. 조건:모든 부분집합은 공집합이 아님.부분집합들은 서로소.부분집합들을 합치면 원래 집합과 같음.예시:A={1,2,3}분할 예: { {1}, {2,3} }또 다른 분할 예: { {1,2}, {3} }틀린 예: { {1,2}, {2,3} } → 2가 중복됨 📌 3. 멱집합..

[DBS] 트랜잭션 - Part 1. 데이터 일관성과 트랜잭션 연산

트랜잭션(Transaction)이란 ? 데이터베이스에서 트랜잭션은 데이터의 일관성을 보장하면서 여러 작업을 하나의 논리적 단위로 묶어 처리하는 과정을 말한다. 일관성(Consistency)란 무엇을 말하는가? 우선 데이터베이스에서 일관된 상태란 다음 조건들을 충족하는 상태이다. 데이터 무결성 제약 조건(Integrity Constraints) 만족개체 무결성: 모든 테이블의 기본 키(Primary Key)는 널(NULL) 값을 가질 수 없으며, 중복될 수 없다. 각 엔티티(개체)는 고유하게 식별되어야 한다.참조 무결성: 외래 키(Foreign Key)는 참조하는 기본 키의 값이 데이터베이스에 존재하거나, 널(NULL) 값이어야 한다. 즉, 참조하는 데이터가 유효해야 한다. 예를 들어, '주문' 테이블에 ..

아두이노의 디지털 신호와 논리값에 대해... (+프로그래밍 연습)

아두이노를 처음 공부하다 보니 HIGH/LOW, 5V/0V과 같은 값과 논리값 1/0과 True/False와 같은 용어가 자주 등장한다. 이것들은 모두 아두이노의 디지털 신호와 관련이 있다.참고로 이 글은 최대한 쉽게 아두이노를 이해해보려는 내 노력의 과정을 기록한 두서 없는 메모일 뿐이라는 점을 먼저 말해둔다. 아두이노의 디지털 신호 : HIGH와 LOW란? 아두이노는 디지털 출력 핀을 통해 전기 신호를 보낸다. 이 신호는 HIGH 또는 LOW 두 가지 상태만 가질 수 있다.HIGH : 5V의 전압, "켜짐(ON)" 상태LOW : 0V의 전압, "꺼짐(OFF)" 상태5V 핀과 GND 핀의 역할아두이노 보드에는 5V 핀과 GND(접지) 핀이 있다.5V핀: 5V핀은 항상 5V를 출력한다. 이 전압은 LED..

TinkerCAD로 아두이노와 친해질 준비하기

학교에서 8월에 소프트웨어 경진대회가 열린다. 나는 아직 개발 경험은 없지만 사회적으로 의미 있는 좋은 프로젝트가 있어 용기 내서 참여하게 되었다. 내가 참여하게 된 프로젝트의 산출물은 IoT로 구현되기 때문에 기본적으로 C를 사용한 임베디드 프로그래밍이 필요하다. 내가 프로그래밍에 직접 참여할 수 있을지는 모르지만 어쨌든 프로젝트가 진행되는 동안 맥락을 이해하는 것이 반드시 필요할 것이기 때문에 나도 아두이노와 좀 친해져 보기로 했다. 우선 알리익스프레스에 아두이노 우노 키트를 주문해놨다. 어차피 키트를 받자마자 바로 코딩을 할 준비가 안 되어있기 때문에, 키트 없이도 아두이노를 실습해볼 수 있는 TinkerCAD로 먼저 간단한 실습을 해 보기로 했다. 마침 야심차게 1년치 구독중인 교보문고 sam ..

[운영체제] 가상 메모리와 주소 변환 - Part 1. 기본 개념 이해하기

가상 메모리란? 가상 메모리는 운영체제가 프로그램에게 제공하는 추상화된 메모리 주소 공간이다. 이는 실제 물리적 메모리(RAM)의 크기와 상관없이 프로그램에게 더 크고 연속적인 메모리 공간을 제공한다.가상 메모리의 핵심은 주소 변환 메커니즘이다. 프로그램은 가상 주소를 사용하고, 이 주소는 메모리 관리 장치(MMU)에 의해 실제 물리 주소로 변환된다. 이때 모든 가상 주소가 항상 물리 메모리에 매핑되어 있는 것은 아니며, 필요한 경우에만 하드 디스크와 같은 보조 기억장치에서 물리 메모리로 데이터를 가져온다.따라서 하드디스크 자체가 메모리처럼 동작하는 것이 아니라, 가상 주소 공간을 효율적으로 관리함으로써 제한된 물리 메모리를 효율적으로 사용하고 필요시 보조 기억장치를 활용하는 것이다. 운영체제는 가상 메..

[SQL] 서브쿼리(Subquery)에 대해 알아보자

방송대 편입 첫 학기에 데이터베이스 과목을 수강하면서 SQL을 처음 배우기 시작했다. SQL의 핵심이라고 할 수 있는 그룹 질의, 중첩 질의, 조인 질의와 같은 질의(쿼리)의 여러 종류를 배우고 있다. 이러한 질의의 원리를 좀 더 꼼꼼하게 정리할 필요를 느껴서 이 포스팅을 쓰게 되었다. 오늘은 그 중에서도 서브쿼리에 대해 최대한 자세히 알아보려고 한다. 서브쿼리, 왜 필요할까?SQL을 쓰다보면 단일 쿼리만으로는 해결이 어려운 상황이 자주 발생할 것이다.예를 들어, 전체 평균 점수보다 점수가 높은 학생의 명단을 조회하는 쿼리는 단일 쿼리로 작성할 수 없다.이런 문제를 해결해주는 도구가 바로 서브쿼리(Subquery)다.서브쿼리를 이용하면 복잡한 조건이나 계산을 한 번에 처리할 수 있어서, SQL을 더 유연..

[파이썬] OOP - 캡슐화 개념과 데이터 은닉, getter/setter 이해하기

지난 포스팅에서는 파이썬의 객체지향 프로그래밍(OOP) 핵심 개념 중 하나인 다형성(Polymorphism)에 대해 알아보았다. 이번 포스팅에서는 데이터 보호와 코드의 안정성에 매우 중요한 역할을 하는 캡슐화(Encapsulation) 개념과 함께 이를 구현하는 getter와 setter 메서드에 대해 자세히 알아보자. 캡슐화란?캡슐화(Encapsulation)는 객체의 내부 상태(속성)를 외부에서 직접 접근하지 못하도록 감추고, 접근을 위한 메서드를 통해 데이터를 간접적으로 제어하는 방법이다.즉, 객체 내부의 데이터 보호와 인터페이스 제공을 목적으로 하며, 불필요하거나 위험한 접근을 제한함으로써 코드의 안정성과 유지보수성을 높여준다. 만약 캡슐화를 통해 객체의 데이터를 보호하지 않으면, 외부에서 내부 ..

[이산수학] 다익스트라(Dijkstra) 알고리즘으로 최단 경로 문제 해결하기

최단 경로 문제란 ?우리가 길을 찾을 때 가장 빠른 길을 고민하듯이, 컴퓨터 과학에도 비슷한 문제가 있다. 바로 최단 경로 문제(Shortest Path Problem)이다. 이 문제는 가중 그래프에서 한 정점(시작점)에서 다른 정점(도착점)까지 가는 경로 중 가중치의 합이 최소가 되는 경로를 찾는 것을 목표로 한다. 여기서 가중치는 간선(edge)에 붙은 숫자로, 거리, 시간, 비용 등을 나타낼 수 있다.예를 들어, 도시 A에서 도시 C로 가는 길이 두 개 있다고 해보자. 하나는 직진해서 10km이고, 다른 하나는 B를 거쳐서 7km라면, 당연히 7km인 경로를 선택할 것이다. 최단 경로 문제는 이런 상황을 수학적으로 해결하는 방법이다. 이번 포스팅에서는 이 문제를 효율적으로 푸는 방법 중 하나인 다익..

1 2 3 4 5 6