목록분류 전체보기 (139)
배고픈 개발자 이야기
문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 A와 B가 주어진다. (0 > a >> b; if (a 9) return -1; cout
문제 - 큐를 구현하고 명령어에 맞게 출력하는 문제 push X : 정수 X를 큐에 삽입 pop : 큐의 앞에 있는 정수를 없애고, 그 수를 출력합니다. 없는 경우 -1 출력 size : 큐에 들어있는 원소의 개수 출력 empty : 큐가 비어있으면 1, 그렇지 않으면 0을 출력 front : 큐의 가장 앞에있는 원소 출력, 원소가 없는 경우에는 -1 출력 back : 큐의 가장 뒤에있는 원소 출력, 원소가 없는 경우에는 -1 출력 첫째 줄에는 N (1
문제 - 정수를 저장하는 스택을 구현하는 문제 push N : 정수 N을 스택에 넣습니다. pop : 스택의 맨 위의 정수를 빼고, 출력. 없는경우 -1 출력 size : 스택의 정수의 개수 출력 empty : 스택이 비어있으면 1, 아니면 0 출력 top : 스택의 가장 위의 정수를 출력, 없는경우 -1 출력 import sys from sys import stdin,stdout sys.setrecursionlimit(1500) class Stack(list): push = list.append def is_empty(self): if not self: return True else: return False def peek(self): return self[-1] def show(self): data ..
한줄씩 읽어 푸는 문제 끝은 ***로 구분 import sys from sys import stdin,stdout sys.setrecursionlimit(1500) class Stack(list): push = list.append def is_empty(self): if not self: return True else: return False def peek(self): return self[-1] def show(self): data = str() while self: data += self.pop() stdout.write(data + "\n") if __name__=="__main__": s = Stack() data = list() while True: data = stdin.readline(8..
문제 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 M(≤ N)이 주어진다. 이제 순서대로 M번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, M)-조세퍼스 순열이라고 한다. 예를 들어 (7, 3)-조세퍼스 순열은 이다. N과 M이 주어지면 (N,M)-조세퍼스 순열을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N과 M이 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ M ≤ N ≤ 1,000) import sys from sys import stdin sys.setrecursionlimit(1500) n = stdin.readlin..
1.linked_list class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): dummy = Node("dummy") self.head = dummy self.tail = dummy self.current = None self.before = None self.num_of_data = 0 def append(self, data): new_node = Node(data) self.tail.next = new_node self.tail = new_node self.num_of_data += 1 def delete(self): pop_data = self.current..
1.heap 완전 이진 트리 : 노드가 위에서 아래로, 왼쪽에서 오른쪽으로 채워짐 heap : 완전 이진 트리를 기본으로한 자료구조형 O(log N) - min, max를 빠르게 찾기 위해 고안 child node value2: return 1 else: return 0 else: # self.min_max == 2 ==> 최대 힙 if value1 > value2: return -1 elif value1 < value2: return 1 else: return 0 def __init__(self, s_min_max = 'min'): self.dynamic_arr = [None, ] # one based index, 다른 언어는 가변배열을 사용한다. C++은 백터 사용, 효율 좋게 짜는 것이 중요(가변배..
1.bubble_sort 2중 for문으로 두원소를 비교해 가며 swap하여 정렬하는 알고리즘으로 이미 큰값으로 정렬이 끝난 index에 대해서는 연산을 하지 않습니다. 단순 2중 for문 이므로 time complexity : O(n^2) def sort(array): for i in range(len(array)): for j in range(len(array)-i-1): if array[j+1] < array[j]: array[j], array[j+1] = array[j+1], array[j] return array -이미 실행한 루프는 돌지않게 하여 약간의 성능향상 2.insertion_sort insertion sort는 비교연산을 적게하고 값 교환을 많이합니다. 입력 데이터 만큼 for문과 값..