😮 위상 정렬이란?순서가 정해져 있는 작업을 차례로 수행해야 할 때 그 순서를 결정해주기 위해 사용하는 알고리즘입니다. 즉, 그래프의 흐름(순차적인 그래프)이 있고 다양한 조건들이 서로 얽혀있을 때, 정확히 1열로 그래프의 각 노드를 나열할 수 있도록 하는 것이 위상 정렬입니다. 예를 들어보겠습니다.위 그림과 같이 총 3개의 과목이 있다고 가정해봅시다. 세 과목을 모두 듣기 위해서는 `자료구조 -> 알고리즘 -> 고급 알고리즘` 순서로 과목을 들어야 합니다. 만약 `자료구조 -> 고급 알고리즘 -> 알고리즘` 순서로 과목을 듣는다면, 해당 순서는 올바른 학습 순서가 아닙니다. 위상 정렬은 다음과 같은 개념이 필요합니다.진입차수 : 특정한 노드가 있을 때 그 노드로 들어오는 다른 노드의 갯수를 의미합니..
1. SQLSQL의 역사SEQUEL (IBM, 1974) 에서 유래 : 최초의 관계데이터베이스관리시스템(RDBMS)인 System R의 데이터베이스 언어로 제안되었다.비절차적 데이터베이스 언어이며, 관계 해석을 위주로 관계 대수의 기능을 혼합한다.미국 표준(ANSI) 및 국제 표준(ISO) 으로 채택되었다.SQL-86 (SQL 1) 최초의 표준SQL-92 또는 SQL/92SQL : 1999(SQL3) → 객체지향 기능 일부 추가SQL : 2003 → XML 지원SQL : 2006, SQL : 2008, SQL : 2011, SQL : 2016SQL : 2019 → 다차원 배열 기능 추가SQL : DDL, DML, DCL 기능을 모두 포함한다. SQL 관련 용어Relation → 테이블(Table)Tupl..
🔗 문제 링크https://www.acmicpc.net/problem/5430 문제 설명선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다.함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다.함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. 예를 들어, "RDD"는 배열을 뒤집은 다음 처음 두 수를 버리는 함수이다.배열의 초기값과 수행할 함수가 주어졌을 때, 최종 결과를 구하는 프로그램을 작성하시오.입력- 첫째 줄..
파일을 이용한 데이터 처리데이터의 중복응용 프로그램이 기대하는 물리적 구조 파일을 이용한 데이터 처리의 문제파일을 여러 군데 사용하는 경우 파일의 포맷이 다르므로 특정 프로그램만 읽을 수 있음동일한 데이터를 나타내는 필드, 타입, 길이 등이 다를 수 있음 1. 데이터 종속성(Data Dependency)파일의 내부 구조에 응용 프로그램이 영향을 받게 됨데이터의 구조나 접근방법이 변경된다면, 관련 응용프로그램의 구조도 변경되어야 함2. 데이터 중복성(Data Redundancy)동일한 내용의 데이터가 중복해서 관리됨데이터 중복으로 인한 문제점데이터 일관성(data consistency) 상실 → 똑같은 데이터인데 서로 맞지 않음 ex) 이름은 같은데 전화번호가 다른 경우보안성(data security) ..
컴퓨터 시스템 구조1. 컴퓨터 시스템의 흐름부팅을 하면 운영체제가 메모리에 상주하면서 실행 → CPU는 매순간 메모리에 있는 기계어를 실행시킴프로그램 실행시키면 해당 프로그램이 메모리에 올라가서 프로세스가 됨CPU가 운영체제에 의해서 실행될 경우에는 필요한 기계어만 사용함, but 운영체제가 사용자 프로그램에게 CPU를 넘겨줄 때에는 안정성을 보장할 수 없음 → 이때는 mode bit을 통해서 안정성 해결또한, 사용자가 프로그램을 계속 사용하는 것을 막기 위해 부가적인 하드웨어를 둠일정 시간이 흐르면 자연스럽게 CPU에게 인터럽트를 걸어서 운영체제에게 CPU 권한을 넘김timer를 통해서 CPU의 사용 시간을 조절함역할 : CPU를 특정 프로그램이 독점하는 것으로부터 보호함Interrupt : CPU가 ..
🔗 문제 링크https://www.acmicpc.net/problem/2751 문제 설명N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.입력- 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. - 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.출력- 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. ✨ 풀이 과정💡이 문제는 정렬 알고리즘 문제입니다. 주어진 수를 오름차순으로 정렬하는 것이므로 sort 자료형을 쓰면import sysn = int(input())num = []for _ in range(n): num.append(int(sys..