자료구조(52)
-
자료구조 (2) 소프트웨어 공학 원리
소프트웨어 공학 원리 1. S/W revolution 1) 프로그래밍 초기 단계 - 프로그래밍은 단순한 문제 해결만 가능하고 적은 수의 프로그래머밖에 없었다. 또한 컴퓨터의 큰 비용 문제가 있었다. - 프로그램의 목적은 문제 해결을 위한 방법 및 행위에만 초점을 맞췄다. - 군사용으로 등장했다. 또한 컴퓨터가 과학자들보다 몸값이 높았다. 이에 따라 컴파일 과정을 수작업으로 진행했다. 2) 프로그래밍 과도기 - 프로그래밍은 보다 큰 문제 해결을 위한 것에 목적이 있었지만 역시나 문제 해결을 위한 방법에 초점을 맞췄다. - 타이트한 데드라인에 맞춰 개발 - 대표적인 언어가 c언어임 3) 프로그래밍 현재 - 프로그래밍은 아주 큰 문제 해결에 초점을 맞추고 문제 해결 방법보단 데이터가 더 중요하다. - 항상 가..
2022.03.17 -
자료구조 (1) 객체 지향 프로그래밍
객체지향프로그래밍 Remind 1. 객체 지향 언어 Basic 1) 변수를 구성하는 세 가지 요소 (1) 변수명(Identifier) (2) 변수를 저장하기 위한 공간 (3) 변수를 저장하는 메모리의 시작 주소: 포인터는 이를 저장하는 변수이다. - 32비트로 동작시킨다. -> 이는 하나의 메모리 주소에 32비트를 전달하는 것이다. -> 속도에 대한 효율을 위해 효율적으로 하기 위해 한번에 불러올 수 있는 크기가 32비트이다. -> 이는 하드웨어가 지원하는 버스 크기를 의미한다. 기본적으로 32비트를 가진다. - operation system이 지원할 수 있는 범위를 고려해야한다. 기존 윈도우 xp 운영체제에서는 4G를 제한으로 만들었었다. 이에 따라 2의 32승이 최대였고, 32비트를 기준으로 만들었다..
2022.03.08 -
백준 온라인 저지, 자료구조 / 23843번: 콘센트 (파이썬 / , 백준 골드문제)
문제 광재는 전자기기 대여사업을 시작했다. 퇴근하기 전에 다음날 손님들에게 빌려줄 N개의 전자기기를 충전하려 한다. 사용 가능한 콘센트는 M개가 있고, 성능은 모두 동일하다. 전자기기들은 한 번에 하나의 콘센트에서만 충전이 가능하고, 충전에 필요한 시간은 2k(0 ≤ k ≤ 15, k는 정수) 형태이다. 광재의 빠른 퇴근을 위해 모든 전자기기를 충전하기 위한 최소 시간이 얼마인지 알려주자. 입력 첫째 줄에 전자기기의 개수 N과 콘센트의 개수 M이 주어진다. (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10) 둘째 줄에 충전에 필요한 시간 ti를 나타내는 N개의 정수가 주어진다. (20 ≤ ti ≤ 215, ti = 2k (0 ≤ k ≤ 15, k는 정수)) 출력 충전에 필요한 최소 시간을 출력한다. 제..
2022.02.02 -
백준 온라인 저지, 자료구조 / 1966번: 프린터큐 (파이썬 / , 백준 실버문제)
문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 확인한다. 나머지 문서들 중 현재 문서보다 중요도가 높은 문서가 하나라도 있다면, 이 문서를 인쇄하지 않고 Queue의 가장 뒤에 재배치 한다. 그렇지 않다면 바로 인쇄를 한다. 예를 들어 Queue에 4개의 문서(A B C D)가 있고, 중요도가 2 ..
2022.02.02 -
백준 온라인 저지, 자료구조 / 2164번: 카드2 (파이썬 / , 백준 실버문제)
문제 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다. 마지막으로 2를 버리고 나면, 남는 카드는 4가 된다. N이 주어졌을 때, 제일 마지막에 남게 되는 카드를 구하는 프로..
2022.02.02 -
백준 온라인 저지, 자료구조 / 1874번: 스택수열 (파이썬 / , 백준 실버문제)
문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어..
2022.01.02