본문 바로가기

Programming/Algorithm15

c언어 반복문을 사용해서 10진수를 2진수 문자열로 만들기 코딩 대회나 취업 등에서 마주할 수 있는 문제로 이런 류의 문제는 간단하니까 한번 쯤은 봐두는게 좋다. 문제 ) 반복문을 사용해서 10진수를 2진수 문자열로 만들어 리턴하기 코드는 다음과 같다. #include int main(void){int n;char arr[256]={'\0',};int i=0;scanf("%d",&n);while(n>0){if(n%2==1)arr[i++]='1';elsearr[i++]='0';n/=2;}i-=1;for(;i>=0;i--){printf("%c",arr[i]);} } 2018. 4. 20.
c언어로 짠 어떤 숫자가 들어오든 1의 자리는 버리고 10의 자리는 올리기 이런 식의 문제는 코딩 대회나 취업 등에서 손코딩 문제 등으로 나올 수 있다. 문제) 어떤 숫자가 들어오든지 1의 자리는 버리고, 10의 자리는 올려서 변환된 숫자를 리턴해라. 예를들어 0부터 9까지는 0이다.10부터 109까지는 100을 출력하는 코드이다.110부터 209까지는 200을 출력한다. 이런식으로 1의 자리는 버리고 10의 자리는 올려주면된다. c언어로 구현하면 다음과 같다. #include int main(void){ int n; int k; scanf("%d",&n); n=n/10; k=n%10; if(k>0){ n=n/10; n++; n=n*100; }else n*=10; printf("%d\n",n); } 2018. 4. 20.
c언어로 짠 띄어쓰기 기준으로 문자열 순서만 뒤집기 문자열의 순서를 뒤집어서 쓰되 문자열 개개는 순서를 유지하는 코드이다.예를 들어 문자열 "I am zeta "를 "zeta am I" 뒤집는 코드이다.쉽게 생각해서 띄어쓰기(스페이스 바) 기준으로 순서만 뒤집어보자. 코드는 다음과 같다. #include int main(void){char * str = "I am zeta"; char str2[100];int space=0;int len=0; while(str[len] != '\0'){ if(str[len] == ' ')space++;len++;}str2[len]='\0'; int k=0;int gan=0;int t=0;for(int i=len-1;i>=0;i--){gan++;if(str[i] == ' '){t=i+1;for(int j=0;j 2018. 4. 20.
간단한 미로찾기 알고리즘(깊이탐색알고리즘, DFS) 깊이우선탐색(DFS) 알고리즘이란? 현재 위치와 붙어있는 간선들을 하나씩 검사하다가 아직 방문하지 않은 정점으로 향하는 간선이 있다면 그 간선을 따라 간다. 이걸 반복하면서 더 이상 갈 곳이 없다면 마지막에 따라왔던 간선을 따라 뒤로 돌아가면서 탐색이 이루어 진다. 쉽게 말해서 1~10번 우물을 파야한다면 1번부터 끝까지 다 파보고 2번으로 넘어가는 방법이라고 볼 수 있다. DFS를 이용해서 간단하게 미로찾기를 구현해보았다. #include int map[11][11]={ 1,1,1,1,1,1,1,1,1,1,1, 1,0,0,0,0,0,0,0,0,0,1, 1,0,0,1,1,1,1,1,1,0,1, 1,1,0,1,1,1,1,1,1,0,1, 1,1,0,1,1,1,1,1,1,0,1, 1,1,0,0,1,1,0,0,.. 2018. 4. 19.