Home - GitDeveloperKim/DreamEach GitHub Wiki
세상 모든 알고리즘을 알 때까지~
Ground Rule
- 한 주에 5개씩만 풀자!!
- 문제풀고 깃허브 업로드
- 이론 wiki에 정리
코딩에 참고하면 좋은 것들
빅오 표기법
- 일반적으로 1억번 이상 연산을 수행하면 죽음
- O(NlogN) + O(N) = O(NlogN) // 맨 마지막에 정답 출력을 위한 최대, 최소, 합계를 구하기 위한 for문 한번 돌리는 것은 아무 영향 없음
자바 초기화
- boolean 값은 초기 선언 시 false로 초기화 된다
- int[] 값은 초기 선언 시 0으로 초기화 된다
BIT 연산
- 1<<n : 2^n
- i&(1<<j) : 계산 결과는 i의 j번째 비트가 1인지 아닌지 의미한다
- if ((num & 1) == 0) : 짝수 홀수 판단, 나머지 연산자보다 효율이 좋다
- 비트 연산자 ^를 두번 연산하면 처음 값을 반환
자주사용되는 변수명 (명명 규칙)
- 코딩문제 풀때 이름짓는데 시간을 줄이고자 함
- start(s) end(e) // 세그먼트 트리 탐색 범위 (트리 타고 들어가는 변수)
- left(l) right(r) // 세그먼트 트리 찾고자 하는 구간 (고정된 값)
- from to // 현재 위치, 다음 위치
- cur next // 현재 노드, 다음 노드
- u v w // u->v로 가는 가중치w
- answer // 정답 출력
- visited[], d[], Arr[], input[], str[] // 인풋값
- Tree, Node, Point, Edge, Graph // 클래스 이름
- adj, mat, topology // 인접 행렬
- Queue q // 큐
- PriorityQueue pq // priority queue
타입변환
구현
길찾기 구현 팁
dx = {0, -1, 0, 1} // 동서남북
dy = {1, 0, -1, 0}
public static int[] Dx = new int[]{-2, -2, -1, -1, 1, 1, 2, 2}; // 체스 말
public static int[] Dy = new int[]{1, -1, 2, -2, 2, -2, 1, -1};
x,y = 2,2 // 현재 위치
nx = x + dx[i]
ny = y + dy[i]
arr[ny][nx] // 반대로 넣어야 x,y 의미 // arr [y][x] == arr[행][열]