프로그래머스 시저 암호 [JS]
·
알고리즘(Algorithm)
charCodeAt 과 fromCharCode + helper 함수를 사용한 코드 접근 방식 [!] : 대문자는 대문자끼리 소문자는 소문자끼리 변환이 되어야함 function solution(s, n) { let asciiCode=[] let res; for(let i=0;iString.fromCharCode(i)).join('') return res } const checkAsciiCode=(asciiCode,n)=>{ let chaged=asciiCode.map((i)=>{ let plus=i+n if(i90){ i=64 i+=plus-90 } else if(i>96 && i 122){ i=96 i+=plus-122 } else if(i===32){ i=32 } else{ i+=n } return i..
unsigned int
·
알고리즘(Algorithm)
이걸 다루는 문제는 처음이여서 정리 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Unsigned_right_shift Unsigned right shift (>>>) - JavaScript | MDN The unsigned right shift operator (>>>) (zero-fill right shift) evaluates the left-hand operand as an unsigned number, and shifts the binary representation of that number by the number of bits, modulo 32, specified by the right-hand op..
그래프 순회
·
알고리즘(Algorithm)
실생활 예시 *Peer to peer networking(P2P) => 개인 대 개인 통신망 (중앙 서버 없이 컴퓨터끼리 서버,클라이언트 역할 -> 서로 연결해서 파일 주고 받기) https://ko.wikipedia.org/wiki/P2P 가장 가까운 것을 찾거나 최단 거리 검색 GPS, 미로 풀기, AI DFS(깊이 우선 탐색) 재귀와 순회의 순서는 다름 -> 그래프를 리스트로 나타냈을 때 재귀는 배열의 앞부분부터 노드가 빠지도록 동작을 하지만 순회는 pop메서드로 인해서 배열의 뒷부분이 먼저 빠진다 1) 재귀 depthFirstRecursive(start){ const result = []; const visited = {}; const adjacencyList = this.adjacencyList..
그래프
·
알고리즘(Algorithm)
그래프(Graphs) 그래프는 유한하고 변할 수 있는 꼭지점이나 노드나 점들의 집합으로 구성된 데이터 구조다 이 점들의 집합이 순서가 있는 경우는 유방향 그래프/ 없으면 무방향 그래프 노드 + 연결(connections) => 그래프 실생활 예시 - SNS - 위치 / 지도 - 추천 시스템 용어 Vertex - 노드(정점) Edge - 간선(노드사이 연결) Weight / Unweighted - 간선에 값을 부여하면 가중 그래프 / 간선에 값이 없으면 비가중 Directed / Undirected -> Instagram에서 팔로우 여부에 따라 게시물을 볼 수 있는지 없는지 (방향) Facebook에서는 모든 사람의 게시물을 볼 수 있음 (무방향) 인접 행렬(adjacency matrix) 간선이 연결되어..
해시 테이블(HASH TABLES)
·
알고리즘(Algorithm)
해시 테이블? key-value 쌍을 저장하는데 사용 순서가 정해져 있지 않다(배열은 0,1,2... 인덱스가 있지만 해시는 아님) 값을 다루는데 매우 빠르다 거의 모든 프로그래밍 언어가 해시 테이블과 같은 데이터 구조를 가지고 있음(속도가 매우 빠르기에) ex) 데이터를 저장하는 배열 0 1 2 3 4 5 6 7 8 9 아래 간단한 예시는 string으로 된 key를 배열에서 사용하는 유효한 인덱스, 즉 작은 숫자로 바꿔주는데 사용되는 해시 함수에 대한 예시를 보여준다 해시 함수에서는 숫자가 나옴, 아래 있는 pink,cyan,orangered를 해시함수에서 나온 번호대로 배열에 저장해준다 pink -> 0 | ["pink", "#ff69b4"] cyan -> 3 | ["cyan","#00ffff"] ..
힙 + 우선 순위 큐
·
알고리즘(Algorithm)
힙 이진 탐색 트리와 비슷 - 왼쪽을 먼저 채워야 한다 (왼쪽 -> 오른쪽) - 우선 순위 큐 같은 데이터 구조를 코딩하는데도 유용하다 - 배열의 인덱스 순서로 부모의 인덱스가 n이라고 했을때 왼쪽 자식은 2n+1 / 오른쪽 자식은 2n+2에 저장된다 [100,19,36,17,3,25,1,2,7] -> 19의 인덱스는 1 / 왼쪽자식은 17 인덱스는 3 /오른쪽 자식은 3 인덱스는 4 반대의 경우(자식에서 부모를 찾는경우) 자식의 인덱스가 n일때 부모의 인덱스는 floor((n-1)/2)이다 - 이진 탐색 트리처럼 큰 값이 오른쪽 / 작은 값이 왼쪽에 배치된다는 약속을 가지고 있지 않다. [모든 참조] https://en.wikipedia.org/wiki/Binary_heap Binary heap - W..