-
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)아기 상어
저만의 메모입니다.
Dec 18, 2018