Chapter5 - 우선순위 큐 5.1 우선순위 큐 ADT 정렬에 자주 응용 5.1.1 우선순위 큐 ADT 임의의 데이터 항목이 삽입되며, 일정한 순서에 의해 삭제되는 데이터구조 일반적인 큐와 비교했을 때 삽입과 삭제가 가능한 것은 동일하지만 일반적인 큐는 삽입 순서 그대로 삭제되고 우선순위 큐는 키 순서에 따라 삭제 5.1.2 우선순위 큐 응용 정렬(Sort): 데이터원소들을 일정한 키 순서에 의해 다시 배치하는 것 5.1.3 우선순위 큐 ADT 메서드 주요 메서드 insertItem(k, e): 키 k인 원소 e를 큐에 삽입 element removeMin() 일반 메서드 integer size() boolean isEmpty() 접근 메서드 element minElement() element min..
문제 출처: www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 1. 문제 접근 방식 - 0과 1이 바뀌는 부분에 중점을 두었다. 연속해서 나타나는 같은 숫자들의 중복을 제거하고 경우를 나누어보니 쉽게 규칙을 찾을 수 있었다. 자세한 설명은 주석에 적어두었다. 2. 내가 푼 코드 S = input() cnt = 0 # 0과 1이 바뀌는 지점을 기준으로 0또는 1 하나로만 나타냄 # 예를 들면, 000111000111이라는 값이 있을 때 # 0101이라고 나타내고..
문제 출처: www.acmicpc.net/problem/10162 10162번: 전자레인지 3개의 시간조절용 버튼 A B C가 달린 전자레인지가 있다. 각 버튼마다 일정한 시간이 지정되어 있어 해당 버튼을 한번 누를 때마다 그 시간이 동작시간에 더해진다. 버튼 A, B, C에 지정된 시간은 www.acmicpc.net 1. 문제 접근 방식 - 간단하게 5분, 1분, 10초 순으로 나누어가며 몫을 구하면 될 것이라고 생각하였다. 2. 내가 푼 코드 import sys T = int(sys.stdin.readline()) # 가장 큰 5분짜리 부터 나눠가며 T값을 몫으로 갱신 시킨다 # 마지막 10까지 나누었을 떄 나머지가 없으면 결과를 출력 # 나머지가 있는 경우는 정확히 맞출 수 없는 것이기 때문에 -1..
Chapter4 - 기본 추상자료형 4.1 리스트 ADT 4.1.1 추상자료형이란 ADT(Abstract Data Type): 인간이 데이터를 다루는 관점에서 데이터구조를 명세한 것 다루는 데이터 데이터에 대한 작업들 발생 가능한 에러상황들 4.1.2 리스트ADT 연속적인 임의 개체들 모델링 4.1.3 리스트 ADT 메소드 일반 메소드 integer size(): 원소 수 반환 boolean isEmpty(): 비어있는지 확인 iterator elements(): 원소 전체 반환 접근 메소드 element get(r): r에 저장된 원소 반환 갱신 메소드 element set(r, e) add(r, e) addFirst(e) addLast(e) element remove(r) element removeF..