본문 바로가기

CS

(6)
파이썬에서 in 연산자 (연결 연산자)는 선형 탐색에서 어떤 힘을 발휘하는가? Insight 1.파이썬에서의 in연산자(연결연산자)는 이미 sequence안에서 선형 탐색을 해주는 기능이 있다. 2.파이썬스러운 코딩은 in을 활용해서 선형탐색 시간을 단축하는 것이다. 3.그래서 for문(반복문)을 쓰지 않고 if문(분기문) 하나로 문제를 해결할 수 있다. 4. pep8스타일을 지향하는 것 특히 간결하게 코딩을 하는 것이 성능 향상의 지름길이다. 5.같은 기능 서로 조금식 다른 방법의 함수를 코딩하면서 어떤것이 더 빠른가 생각해 보게 되었다. 6.in 키워드는 선형탐색을 통해 O(n)의 시간 복잡도를 가진다. 선형 탐색이란 리스트의 처음부터 끝까지 순서대로 하나씩 탐색을 진행하는 알고리즘입니다. 선형 탐색함수를 만들고 for문 사용과 사용하지 않는 예시) 어떤 원소가 리스트 안에 포..
파이썬의 자료 구조 자료구조 : 메모리상에서 DB에 저장하기 위해서 자료구조를 사용합니다. 위의 이미지는 구현의 관점에서 본 파이썬의 자료형입니다. 구현과 형태에 따라 자료 구조를 분류합니다. 구현 배열 : 순서가 잘 변하지 않으며 (시퀸스) 반복이 가능 해야 한다(이터레이터) 링크드 리스트: 하나의 노드에 하나의 헤더를 가진 단위로 서로의 순서를 사용하는 것 해시 테이블 : 해시 값에 따라 인덱싱 된다. 형태 선형 스텍 : LIFO의 형태 큐 : FIFO의 형태 덱 : FIFO의 형태가 앞뒤로 다되는것 비선형 트리 이진 트리 Btree 그래프 방향성 유무에 따라서 자료구조를 평가 하는법 O() 시간 복잡도 = 최악의 알고리즘 계산 속도 배열과 링크드리스트 구별 배열의 특징 인덱싱을 활용하면 접근속도는 O(1)입니다. 링크..
[python] string 입력의 복소수 두개를 곱해 string 으로 출력 하기 # string 타입의 복소수의 두수의 연산을 입력받아 # 서로 곱하고 출력을 다시 string으로 하시요 # Input: "1+-1i", "1+-1i" # Output: "0+-2i" # 설명: (1 - i) * (1 - i) = 1 - i - i + i^2 = -2i, def complexNumberMultiply(a, b): aa = a.split("+") bb = aa[1].split("i") aaa = aa[0] bbb =bb[0] cc = b.split("+") dd = cc[1].split("i") ccc = cc[0] ddd =dd[0] a=int(aaa) b=int(bbb) c=int(ccc) d=int(ddd) f = (a*c)-(b*d) g = (b*c)+(a*d) answer = s..
[JavaScript] 최빈값을 정해진 순서대로 답하기 nums는 숫자로 이루어진 배열입니다. 가장 자주 등장한 숫자를 k 개수만큼 return해주세요. 예) nums = [1,1,1,2,2,3] k = 2 return [1,2] function topK(nums, k) { let K = k // 받는배열 let Nums = nums; // 유니크한 배열 let uniq = Nums.reduce(function(a,b){ if (a.indexOf(b) (a[b]=0,a),{}); // 각 키값별로 값이 여러개인 경우 1을 값에 더해준다 for(let i = 0;i
괄호 짝 찾기 알고리즘 s는 여러 괄호들로 이루어진 String 인자입니다.s가 유효한 표현인지 아닌지 true/false로 반환해주세요 num: 종류는 '(', ')', '[', ']', '{', '}' 으로 총 6개 return: true/false 예 s = "()[]{}" return true 예 s = "(]" return false function isValid(s) { let arr = s.slice(); for (let i = 0; i
1022 과반수 숫자 구하기 input ex) nums = [3,2,3] output ex) return 3 function moreThanHalf(nums) { // 받는배열 let Nums = nums; // 유니크한 배열 let uniq = Nums.reduce(function(a,b){ if (a.indexOf(b) (a[b]=0,a),{}); // 각 키값별로 값이 여러개인 경우 1을 값에 더해준다 for(let i = 0;i