저만의 메모입니다.

Dec 18, 2018


  • long long을 항상 생각하자.

  • 2의 n제곱은 1<<n <- boj 1182
    이걸로 부분집합 완탐가능

  • 처음 입력받으면서 반복문을 처리할 때 처리를 신중하게 생각하고 하자.
    예)boj 15683 감시문제…

  • bfs에서 시간 계산할 때 q.size를 for문에 바로 쓰지 말자.
    그럼 반복문 도중 q에 push되니까 수시로 갱신되므로 위에 선언을 한번하고 하자
    예)swea 1953 탈주범검거

  • 순열을 출력하는데 같은 순열은 나오지 않게 하는 것
    중복을 제거해야한다. 난이도 살짝 있었음.
    예)boj 15663 N과M(9)

  • dfs안에서 반복문 돌릴때 처음부터 돌리지말고 해당위치를 파라미터로 넘겨서 해당위치부터 돌려야 시간이 엄청나게 단축된다. 이걸 생각 못해서 많은 시간을 버렸다…..ㅠㅠ
    boj에서 런타임에러나면 배열크기를 잘줬는지 확인하자..
    예)boj.15684 사다리 조작

  • BFS할때 상태유무를 체크해야해서 큐에 2가지가아닌 3가지 파라미터를 써야할 경우
    Check할 ch배열도 그대로 해줘야한다
    예)boj.2206 벽부수고 이동하기

  • char str[20];
    cin » str; 일때
    if(str==”up”) 이렇게 비교하면
    “up”자리를 모르므로 strcmp를 쓰자!
    아니면
    if(str[0]==’u’)을 하자
    아니면 string으로 입력 받자
    예)swea.6109 추억의 2048 게임

  • 완탐할때 초기화를 항상 잘해주자…
    예)swea.5656 벽돌 깨기

  • 비슷한 비슷한 함수들(복붙(?))이 있는 경우,
    디버깅할 때 하나를 고려했으면 다른 애들도 꼭 고려하자!!!!
    예) swea 4014

  • 범위 설정 잘하자!!!!
    x범위 30, y범위 60이면
    arr[30][60]으로 주자!
    arr[60][30]으로 주지말고!!!
    조심 또조심!!
    예) 사다리 타기

  • BFS 사용할 때 q.pop()을 잘 하자!!!

  • i+1이다!! sx+1아니다!!
    void dfs(int sx,int cnt) {
    for (int i = sx; i < c.size(); i++) {
          selectedCh[i] = true;
          dfs(i + 1, cnt + 1);
          selectedCh[i] = false;
      }
    
  • 큐나벡터는 만드는게 시간 오래걸린다!! 차라리 초기화를하자!!!

  • bfs하면서 거리나 시간 측정할때 사이에 장애물이 있으니까 depth를 시간(or거리)으로하라!
    ((ax-bx)+(ay-by)같은거리계산x)
    ex)아기 상어