[이코테] [4] 정렬-Sort
·
Programming/CodingTest
선택정렬- 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸는 것을 반복1) 0 5 9 7 32) 0 3 9 7 53) 0 3 5 7 9# 예제 - 이중 반복문# 시간복잡도 : O(N제곱)array = [7,5,9,0,3,1,2]for i in range(len(array)): min_idx = i for j in range(i+1, len(array)): if array[min_idx] > array[j]: min_idx = j array[i], array[min_idx] = array[min_idx], array[i]print(array)  삽입정렬- 처리되지 않은 데이터를 하나씩 골라 적절한 위치에 삽입- 선택 정렬에 비해 구현난이도가 높지만, ..
[이코테] [3] DFS 와 BFS
·
Programming/CodingTest
그래프 탐색 알고리즘 DFS/BFS 탐색 알고리즘으로 많이 등장하는 유형스택 구현 예제stack = []stack.append(5)stack.append(4)stack.pop()stack.append(3)stack.append(2)stack.pop()print(stack)# >>> [5, 3]print(stack[::-1]) # 스택 역순# >>> [3, 5] 큐 구현 예제from collections import dequequeue = deque()queue.append(5)queue.append(4)queue.append(3)queue.popleft()queue.append(2)queue.append(1)queue.popleft()print(queue)# >>> deque([3, 2, 1])queue..
[이코테] [2] 그리디(Greedy) 와 구현 (Implementation)
·
Programming/CodingTest
탐욕법 - Greedy그리디 알고리즘(탐욕법)은 현재 상황에서 최적의 해를 항상 보장하는 방법을 적용 예제 1문제 - 손님에게 거슬러 줘야 할 돈이 N 일 때 거슬러 주어야할 동전(500,100,10)의 최소 개수 구하기풀이 - 가장 큰 화페 단위부터 돈을 거슬러 준다.그리디 적용 조건 - 큰 단위가 항상 작은 단위의 배수가 되어야 한다. ( 500원 동전은 10원,100원 동전의 배수  )코드 - n = 1260count = 0array = [500, 100, 50, 10]for coin in array: count += n // coin n %= coinprint(count)# 시간복잡도 O(K)  예제 2문제 - 각 자리가 숫자로 이루어진 문자열(S), 왼쪽부터 'x', '+' 연산자를 ..
[이코테] [1] 코딩테스트를 위한 많이 활용하는 파이썬 문법
·
Programming/CodingTest
내장 함수프로그램을 작성할 때 없어서 안되는 필수적인 기능을 포함합니다. map 함수반복가능한(iterable) 자료형의 모든 요소에 특정 함수를 적용 후, 결과 반환map(적용할 함수, 반복가능한 객체)map() 함수의 반환값은 map객체로, 결과를 리스트나 튜플로 변환해야 함예제 : data = list(map(int, input().split())) 정렬 함수sorted() 는 내장 함수, 새로운 리스트를 반환sort() 리스트의 함수, 원본 리스트 자체를 정렬, 반환값은 None 람다 함수# 람다 함수 [1]print((lambda a,b : a+b)(10,5)) # 결과 15# 람다 함수 [2]array = [('매트',50),('로리'20),('소드'75)]def my_key(x): retur..
[HackerRank] Bill Division 문제 - Implementation
·
Programming/CodingTest
문제 설명구현문제입니다.친구들이 식사 후 식사비를 나누는 상황입니다. 하나의 친구는 특정 요리를 먹지 않았습니다.요리를 나누고 계산했을 때, 그 친구는 본인이 먹지 않은 요리에 대해 청구된 부분에 대해 불만을 갖습니다.친구들이 각자 내야 할 금액을 계산하고, 불만을 가진 친구가 정당하게 내야 할 금액과 비교하여 그 차이를 계산합니다.https://www.hackerrank.com/challenges/bon-appetit/problem?isFullScreen=true Bill Division | HackerRankDetermine whether or not Brian overcharged Anna for their split bill.www.hackerrank.com 문제 접근 방법입력:첫 번째 줄: 친구..
Python - Numpy란 [1]
·
Programming/Python
Numpy란Numpy는 Numerical Python의 약자로 Numeric과 Numarray라는 두 개의 패키지를 기반으로, 다차원 배열 객체를 컨트롤하는데 이점이 있습니다. Numpy는 Pandas가 구축된 기본 데이터 구조와 연산을 제공합니다.Pandas를 사용하는 것인 Numpy도 같이 사용하는 하는 의미입니다.  List와 비교Numpy를 활용하는 것은 Python List보다 50배 더 빠릅니다.사용시 메모리에서 연속적인 참조위치로 저장이되므로 액세스시 매우 효율적이고, 최근 CPU와도 최적화가 잘 되어있습니다. C, C++로 프로그래밍되어 있으며Numpy를 이용한 array object를 ndarray라고 부릅니다. 예제 )import numpy as nparray = np.array([[1..
Python - 클로저와 __call__ 함수
·
Programming/Python
클로저 기능의 필요성을 확인하기 위해 아래와 같이 defaultdict을 활용하여 result값을 초기화 시키는 코드가 있다. defaultdict(키가 없을 경우 초기 값, 선언된 dict) 형식에 맞춰 result를 선언하였고, 키가 없을 경우 초기 값에 로그를 보기 위해 숫자가 아닌 log_init 함수로 설정하였다. ( 함수또한 일급객체이므로 참조 값으로 활용 가능 ) def log_init(): print('키가 초기화 됨') return 0 from collections import defaultdict current = {'green': 15, 'blue': 7} increments = [ ('red', 6), ('blue', 17), ('orange', 9) ] result = defaul..
Python - 파이썬 코딩의 기술을 통한 클린코딩
·
Programming/Python
해당 글은 파이썬 코딩의 기술(개정 2판 -> 3.8버전까지 맞춤형) 서적을 읽고 나중에 다시 보려고 몇몇 내용을 간략하게 정리했다. '이렇게 짯으면 더 좋은 코드가 되었을텐데' 라는 부분이 많았고 알지만 애매하게 알았던 부분에 대해 도움이 되었던 내용을 정리했다. BETTER WAY 08 - 여러 이터레이터에 루프를 수행하려면 zip를 사용하라 주어진 names list의 가장 긴 길이를 가지는 원소를 구해보자. longest_name = None max_count = 0 names = ['Kain', 'Joe', 'Alice'] counts = [ len(n) for n in names ] print(counts) >>> [4, 3, 5] enumerate를 생각할 수 있다. for i, name i..
wave35
'Programming' 카테고리의 글 목록 (4 Page)