우선순위 큐 / 힙(heap)
·
자료구조 | 알고리즘
우선순위 큐 - 우선순위가 가장 높은 데이터를 가장 먼저 삭제하는 자료구조 - 데이터를 우선순위에 따라 처리하고 싶을 때 사용 자료구조 추출되는 데이터 스택(Stack) 가장 나중에 삽입된 데이터 큐(Queue) 가장 먼저 삽입된 데이터 우선순위 큐(Priority Queue) 가장 우선순위가 높은 데이터 우선순위 큐를 구현하는 법 1) 리스트를 이용하여 구현 2) 힙을 이용하여 구현 데이터의 개수가 N개일 때, 구현 방식에 따라서 시간 복잡도를 비교 우선순위 큐 구현방식 삽입 시간 삭제 시간 리스트 O(1) O(N) 힙 O(log N) O(log N) 단순히 N개의 데이터를 힙에 넣었다가 모두 꺼내는 작업은 정렬과 동일 (힙 정렬) - 시간 복잡도 O(NlogN) 힙의 특징 - 완전 이진 트리 자료구조..
Programmers / 2단계 / 깊이/너비 우선 탐색(DFS/BFS) / python /
·
코딩테스트/programmers (python)
코딩테스트 연습 - 게임 맵 최단거리 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 from collections import deque def solution(maps): n = len(maps); m = len(maps[0]) visited = [[False] * m for _ in range(n)] q = deque() q.append((0, 0)) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] visited[0][0]=True while q: y, x = q.popleft() for i in range(4): nx=x+dx[i] ny=y+dy[i] if 0
Programmers / 2단계 / k진수에서 소수 개수 구하기 / python / 2018 KAKAO BLIND RECRUITMENT
·
코딩테스트/programmers (python)
코딩테스트 연습 - k진수에서 소수 개수 구하기 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 # n을 k진법으로 나타낸 문자열 반환 def conv(n, k): s = '' while n: s += str(n%k) n //= k return s[::-1] # n이 소수인지 판정 def isprime(n): if n
itertools 라이브러리
·
카테고리 없음
반복자(iterator): 객체 지향적 프로그래밍에서 배열이나 그와 유사한 자료구조를 순회하는 객체 무한 이터레이터 이터레이터 인자 결과 예 count() [start [, step]] start, start+step, start+2*step, … count(10) --> 10 11 12 13 14 ... cycle() p p0, p1, … plast, p0, p1, … cycle('ABCD') --> A B C D A B C D ... repeat() elem[,n] elem, elem, elem, … 끝없이 또는 최대 n 번 repeat(10, 3) --> 10 10 10 가장 짧은 입력 시퀀스에서 종료되는 이터레이터 이터레이터 인자 결과 예 accumulate() p [,func] p0, p0+p1..
Programmers / 2단계 / [1차] 뉴스 클러스터링 / python / 2018 KAKAO BLIND RECRUITMENT
·
코딩테스트/programmers (python)
코딩테스트 연습 - [1차] 뉴스 클러스터링 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 def solution(str1, str2): str1 = str1.upper() str2 = str2.upper() # 다중집합 구하기 A, B = [], [] for i in range(len(str1)-1): str = str1[i:i+2] # 두글자씩 끊어 if str.isalpha(): # 영문자로 된 글자만 다중집합의 원소로 만듦 A.append(str) for i in range(len(str2)-1): str = str2[i:i+2] # 두글자씩 끊어 if str.isalpha(): # 영문자로 된 글자만 다중집합의 원소로 만듦 B.append(str) # 자카드 ..
python / 얕은 복사, 깊은 복사
·
카테고리 없음
파이썬에는 immutable객체와 mutable 객체가 있다. immutable 객체 - 값을 바꿀 수 없는 객체 - 값이 바뀌면 다른 메모리 공간을 할당하여 주소값도 바꿔줘야 한다. - int, str, float, boolean, tuple mutable 객체 - 주소값이 동일하더라도 그 안의 값을 바꿀 수 있는 객체 - list, dict, set 얕은 복사와 깊은 복사는 mutable 객체를 복사할 때만 신경쓰면 된다. 얕은 복사 - 객체의 참조값, 흔히 말하는 주소값만 복사하는 것 - 객체의 주소값을 복사하기 때문에 복사 대상의 값이 바뀌면 복사한 값도 바뀜 → 두 변수 간 독립성이 성립하지 않게 됨 a=[1,2,3] b=a print(a, b) #[1,2,3][1,2,3] print(id(a)..
Programmers / 2단계 / 튜플 / python / 2019 카카오 개발자 겨울 인턴십
·
코딩테스트/programmers (python)
코딩테스트 연습 - 튜플 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 def solution(s): result=[] s=s[2:-2] s=s.split('},{') s.sort(key=lambda x: len(x)) for i in range(len(s)): if ',' not in s[i]: result.append(int(s[i])) else: for j in s[i]: if j not in s[i-1] and j!=',': result.append(int(j)) return result 튜플의 각 요소가 한 자리 수일 때만 적용되는 코드라 테스트 3에서 실패한 것 같다 모범 답안 def solution(s): answer = [] s = s[2:-2] s = s.split(..
Programmers / 2단계 / 모음사전 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/84512 나의 풀이 . word의 길이와 각 알파벳의 인덱스 값을 이용해 결과를 찾아낼 수 있을 것이라고 생각하였으나 어려움이 있었다. 모범 답안 중복 순열 이용 from itertools import product def solution(word): words = [] for i in range(1, 6): for c in product(['A', 'E', 'I', 'O', 'U'], repeat=i): words.append(''.join(list(c))) words.sort() return words.index(word) + 1 단순히 중복 순열을 이용하여 sort함수로 정렬을 하면 되는 문제였..