알고리즘/짧은 알고리즘 3

십진수에서 이진수로 바꾸는 python코드 [이진수출력]

먼서 십진수에서 이진수로 바꾸려면 이런 과정을 거친다. 0이 나올 때까지 2로 나누면 된다. 그리고 나머지를 끝에부터 적으면 그것이 바로 이진수다. 스택을 그려 이해해보면 이와 같다. dfs(x//2)가 5번째 줄이라고 하면 D(11)부터 계속해서 5번째 줄로 인해 2로 나눈 몫으로 DFS함수를 호출한다. 그리고 끝내 몫이 0이 나온다. 그러면 그때의 나머지 부터 차례대로 출력하면 된다. 이것을 재귀를 사용해 python 코드로 바꾸면 다음과 같다. def dfs(x) : if x == 0 : return else : dfs(x//2) print(x%2,end='') if __name__=="__main__" : n = int(input()) dfs(n) dfs를 이용해 구현할 수 있다.

[c++]이차원배열_초기화방법(memset)

알고리즘을 풀다보면 방문용으로 사용하는 이차원배열을 테스트 케이스 동안 계속해서 이용하는 때가 있다. 그때는 한 테게가 끝나면 모두 0으로 초기화해야하는데 할때마다 잊어먹어서 내가 나중에 찾아서 보기위해 글을 적는다. #include memset(visit,0,sizeof(visit)); 이런식으로 visit이라는 이차원 배열을 중간에 있는 숫자로 초기화할 수 있다. cstring을 include해야하니 잊어버리지말자!

[C++]BFS_상하좌우 이동 배열(dx,dy)

BFS알고리즘 문제를 풀때 늘 사용하는 배열이 있다. int dx[] = {0,1,0,-1}; int dy[] = {1,0,-1,0}; 바로 이차원 배열의 탐색을 위해서 사용하는 dx와 dy배열이다. 이 배열을 이용해 상하좌우를 탐색하는데 지금까지 방향을 잘못알고있었다. 만약 이 배열이 동,남,서,북 이라는 것을 알고있다면 이 글을 읽을 필요 없다. 이런 당연한 배열을 포스팅할생각 없었지만 어제 https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감 www.acmicp..