알고리즘
-
[알고리즘] License Key Formatting알고리즘/배열 2021. 4. 19. 14:50
Problem Key Point StringBuilder의 insert() StringBuilder sb = new StringBuilder(); sb.insert(length - i, "-"); StringBuilder.insert(int offset, String str) offset위치에 str 문자열을 집어넣는다. length - i는 뒤에서 i 번째 offset을 의미한다. Code public String solution(String str, int k) { str = str.replaceAll("-", ""); str = str.toUpperCase(); int length = str.length(); StringBuilder sb = new StringBuilder(); for (int i..
-
[알고리즘] K Closest Points to Origin알고리즘/배열 2021. 4. 19. 14:42
Problem Key Point Priority Queue (min heap) Queue priorityQueue = new PriorityQueue((a,b) -> (a[0]*a[0]+a[1]*a[1])-(b[0]*b[0]+b[1]*b[1])); Code public class KClosest { public int[][] solution(int[][] points, int k) { int[][] result = new int[k][2]; Queue pq = new PriorityQueue((a,b) -> (a[0]*a[0]+a[1]*a[1])-(b[0]*b[0]+b[1]*b[1])); for (int[] p : points) { pq.offer(p); } System.out.println(pq); i..
-
[알고리즘] Plus One알고리즘/배열 2021. 4. 19. 14:26
Problem Key Point 인덱스가 0보다 크거나 carry가 있을 때까지 루프를 돌린다. (number + 1) % 10이 0인 경우 carry가 있는 것으로 판단한다. 전체 요소들을 다 돌고 나서 carray가 있는 경우 배열의 크기+1의 새로운 배열을 만들고 리턴한다. Code public class PlusOne { public int[] solution(int[] digits) { int carry = 1; int index = digits.length - 1; while (index >= 0 && carry > 0) { digits[index] = (digits[index] + 1) % 10; if (digits[index] == 0) { carry = 1; } else { carry =..
-
[BFS] 미로찾기알고리즘/BFS 2021. 4. 16. 12:54
Pseudo-code BFS(미로, 시작 노드, 종료 노드) { Queue에 시작 노드를 넣는다. WHILE(Queue가 비워질때까지) DO ( Queue에서 노드를 하나 꺼낸다. FOR(동 to 북) ( 노드 위치를 이동시킨다. WHILE(노드가 미로의 범위 안에 존재하면서 벽이 아닐 때까지) DO ( 노드의 위치를 이동시킨다. ) 벽에 닿았으므로 노드의 위치를 이전 위치로 변경한다. IF(방문한 적이 있다면) THEN (CONTINUE) 해당 노드를 방문처리한다. IF(해당 노드가 종료 노드이면) THEN (미로찾기 성공) Queue에 해당 노드를 넣는다. ) ) }