Home - GitDeveloperKim/DreamEach GitHub Wiki

세상 모든 알고리즘을 알 때까지~

Ground Rule

  1. 한 주에 5개씩만 풀자!!
  2. 문제풀고 깃허브 업로드
  3. 이론 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

타입변환

  • int -> long
  • 1000_000_007의 의미는 10억이 넘는 최소의 소수
  • 결국 연산할때 MOD연산을 해주고 결과값도 MOD를 해주는게 좋다
  • refer
  • refer

구현

길찾기 구현 팁
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[행][열]

컴퓨터 사이언스 이론

  • 발머의 피크 이론이란, 프로그래머의 혈중 알콜 농도가 0.129%~0.138% 사이일 때 초인적인 코딩 실력을 발휘한다는 이론이다. 술먹고 코딩하면 잘풀리나...? click
  • 12피트 길이의 잔디밭에 울타리를 길게 세우려 하는데 기둥 사이의 울타리 벽 부분은 폭이 3피트 길이라면 울타리 기둥이 몇개 필요한가? 5개가 필요하다 : 울타리 기둥(fencepost) 에러,,, 개발자는 숫자를 잘 못센다...
  • 지식의 저주 네이버사전