본문 바로가기
728x90
반응형

전체 글58

프로그래머스 Level 2 - 프린터 [문제 설명] 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린터를 개발했습니다. 이 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 예를 들어, 4개의 문서(A, B, C, D)가 순서대로 인쇄 대기목록에 있고 중요도가 2 1 3 2 라면 C D A B 순으로 인쇄하게 됩니다. 내가 인쇄를 요청한 문서가 몇 번째로 인쇄되는.. 2021. 1. 22.
프로그래머스 Level 1 - 짝수와 홀수 [문제 설명] 정수 num이 짝수일 경우 Even을 반환하고 홀수인 경우 Odd를 반환하는 함수, solution을 완성해주세요. [제한 조건] num은 int 범위의 정수입니다. 0은 짝수입니다. [입출력 예] num return 3 Odd 4 Even [제출] #include #include using namespace std; string solution(int num) { string answer = ""; if(num%2==0) return "Even"; else return "Odd"; } 2021. 1. 15.
알고리즘 - 선택 정렬 (Selection Sort) 알고리즘 - 선택 정렬 (Selection Sort) 제자리 정렬 알고리즘 중 하나로, 입력 데이터 이외에 다른 추가 메모리를 요구하지 않는다. 알고리즘이 단순하고 사용할 수 있는 메모리가 제한적인 경우에 사용시 성능 상의 이점이 있다. 주어진 리스트 중에서 최소값을 먼저 찾고, 그 값을 맨 앞에 위치한 값과 교체한다. 맨 처음 위치를 뺀 나머지 리스트들을 같은 방법으로 끝까지 교체한다. 모든 경우 시간복잡도 : (n-1) + (n-2) + .... + 2 + 1 => n(n-1)/2= O(n^2) [예시] [Code] def selection_sort(arr): for i in range(len(arr) - 1): min_idx = i for j in range(i + 1, len(arr)): if a.. 2021. 1. 11.
알고리즘 - 삽입 정렬 (Insertion Sort) 알고리즘 - 삽입 정렬 (Insertion Sort) 삽입 정렬은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여, 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘이다. 최악의 경우 시간복잡도 : (n-1) + (n-2) + .... + 2 + 1 => n(n-1)/2= O(n&2) (최악의 경우) 최선의 경우 시간복잡도 : O(n) (정렬이 모두 되어있는 경우에는 한 번 씩만 비교하면 되기 때문) [예시] 각 회전 마다 연두색 밑줄이 되어 있는 부분이 이미 정렬된 배열 부분! [ 코드 ] def insertion_sort(arr): for end in range(1, len(arr)): for i in range(end, 0, -1): if arr[i - 1] >.. 2021. 1. 11.
알고리즘 - 버블 정렬 / 거품 정렬 (Bubble Sort) 알고리즘 - 버블 정렬 / 거품 정렬 (Bubble Sort) 버블 정렬은 서로 인접한 두 원소를 검사해 정렬하는 알고리즘이다. 첫 번째 자료와 두 번째 자료, 두번째 자료와 세 번째 자료, ... , 마지막-1 번째 자료와 마지막 자료의 대소를 비교해 교환한다. 1회전 할 때 마다 마지막 자료는 가장 큰 값이 되므로 (조건이 오름차순일 경우) 정렬에서 제외한다. [ 시간복잡도 ] (n-1) + (n-2) + .... + 2 + 1 => n(n-1)/2 = O(n^2) [ 예시 ] [ 코드 ] size = int(input()) arr = [] for i in range(size): arr.append(int(input())) for i in reversed(range(size)): for j in ra.. 2021. 1. 8.
자료구조 - 해싱(Hashing) 1. 해싱이란? 해시(Hash)란 데이터를 다루는 기법 중 하나이며, 해시 함수(Hash function)는 데이터를 효율적으로 관리하기 위해서 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수이다. 매핑 전 원래 데이터의 값을 Key, 매핑 후 데이터의 값을 Hash Value 또는 해시 코드라고 하며 키와 값으로 매핑되는 과정 자체를 해싱이라고 한다. 탐색, 삽입, 삭제 연산 모두 해시 함수를 거치는 시간만 소요되기 때문에 일반적으로 O(1)의 시간복잡도를 가진다. 2. 해시 테이블이란? 해시 테이블(Hash table)은 키를 값에 매핑할 수 있는 구조인, 연관 배열 추가에 사용되는 자료 구조이다. Hash table은 Hash 함수를 사용하여 색인(index, Key)을 버킷(bucke.. 2021. 1. 8.
728x90
반응형