1. defaultdict 사전에서 value의 기본값을 지정하여 새로 key를 생성할 때 value를 지정하지 않으면 기본값이 자동으로 들어간다 from collections import defaultdict로 사용할 수 있음 단어 빈도수 계산에 유용함 defaultdict를 쓰지 않으면 d[word]하는 순간 에러가 나는데 try~except~로 처리해야하는 번거로움이 있다 하지만 defaultdict로 기본값을 미리 지정해주면 d[word]해도 에러가 안난다 2. Ordereddict 데이터 입력한 순서대로 출력해주는 dictionary 요즘엔 기본 dictionary도 입력한 순서대로 출력해주므로 큰 의미없다 3. namedtuple 튜플 형태로 데이터 구조체(자료 구조, 이름 등)를 저장하는 자..
1. 문제 https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다. 섞은 음식의 스코빌 지수=가장 맵지 않은 음식의 스코빌 지수+(두 번째로 맵지 않은 음식의 스코빌..
최댓값과 최솟값을 찾는 연산을 빠르게 하기 위해 고안된 완전이진트리 트리는 root node에서 밑으로 가지를 뻗어나가는 형태의 자료구조로 binary tree인 이진 트리는 최대 2개까지만 자식 노드를 가진다 최소힙은 부모 node가 자식 node보다 항상 작은 binary tree 최대힙은 부모 node가 자식 node보다 항상 큰 binary tree heap은 배열로 구현되며 파이썬에서는 list로 만들어진다 import heapq를 통해 파이썬에서 heapq 관련 함수 사용가능 기존 리스트를 heapq로 만들려면 heapify()를 이용 heap2 = [50,10,20] heapq.heapify(heap2) print(heap2) [10,50,20] 혹은 빈 리스트를 생생한 후에 heappush..
1. 문제 https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 개수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return하도록 solution ..
1. lambda 함수 이름 없이 함수처럼 쓰는 익명함수 lambda (parameter) : (return) (condition) 구조 return 값은 보통 한줄정도로 짧게 사용을 권장하지는 않으나 여전히 사람들이 많이 씀 왜 권장하지 않느냐? 테스트 하기 어려움, 이해하기 어려움, 함수의 docstring도 불가능 2. map 시퀀스형 데이터 각 요소에 특정한 함수를 적용시켜주는 함수 여러개의 파라미터를 갖는 함수라면 여러개의 리스트를 받을 수 있음 a = [1,2,3,4,5] f = lambda x:x**2 list(map(f,a)) [1,4,9,16,25] f = lambda x,y : x+y list(map(f,a,a)) [2,4,6,8,10] 이해하기 어려워 사용을 권장하지는 않는다 f = ..
1. 직사각형에 자연수를 순서대로 집어넣기 rows * columns 직사각형에 1,2,3,...을 순서대로 집어넣을려면 matrix = [ [row * columns + (column+1) for column in range(columns)] for row in range(rows)] rows = 4 columns = 3 matrix = [[row*columns + (columns+1) for column in range(columns)] for row in range(rows)] print(matrix) [[1,2,3],[4,5,6],[7,8,9],[10,11,12]] 2. 직사각형 배열에서 열을 뽑는 방법 j+1열을 뽑고 싶으면 [row[j] for row in matrix] j = 2 [row[j..