본문 바로가기

C C++166

[C/C++] 백준 10872번 팩토리얼 문제 풀이 재귀함수를 사용하면 된다. 함수 안에 함수를 넣어 동일한 계산이 반복되도록 하고, 최종 값이 리턴되면 된다. 입력 값이 0이 들어갈 수도 있는 데, 이 경우를 처리하도록 신경써야 한다. 따라서 초기 if (a==1) 식에서 if (an; res=factorial(n); cout 2022. 9. 17.
[C/C++] 맵(좌표) 동서남북 알고리즘 문제 고찰 오늘은 알고리즘 문제에 흔히 나오는 그래프(좌표) 탐색에 대해 알아보도록 하려고 한다. 흔히 알고리즘 문제에서 정사각형의 지도가 주어지고 그 안에서 보물을 찾는다든지, 탐색하면서 값을 변경하는 지 등등을 요구하는 문제들이 보인다. 이번에는 해당 위치에서 동서남북으로 탐색하는 예시를 들고자 한다. 맵(좌표) 탐색하기 크게 두 가지가 구현되어야 한다. 1) for문으로 현재 위치를 계속해서 바꿔 줌 (현재 좌표값이 계속해서 바뀌면서 탐색함) 2) 현재 위치 기준으로 동서남북으로 탐색하기 예시는 5x5 지도에서 인덱스 x=2, y=1에 있는 보석과 x=3, y=1에 있는 보석이 있고, 보석의 개수를 세는 문제이다. 00000 00000 01000 01000 00000 위와 같다. 첫 번째: 맵에 대한 값과 동.. 2022. 8. 8.
[C/C++] 정수 자릿수 뒤집기 이번에는 입력받은 정수의 자릿수를 뒤집는 것을 알아보도록 하려고 한다. 우선 it 취업을 위한 알고리즘 문제풀이 (with C/C++) : 코딩테스트 대비라는 강의에서 알게 된 내용임. 알고리즘 문제 풀 때 정수 자릿수를 바꾸라는 문제가 있는 데, 종종 수학적인 느낌으로 쉽게 풀 수 있다. 지금까지는 문자열에 각 자릿수를 입력하고 이를 스위칭하는 방식으로 문제를 풀어 왔는 데, 너무 비효율적임. 정수 자릿수 뒤집기 #include int main() { int a=12345; int res=0; int tmp=0; while (a>0){ tmp=a%10; res=res*10+tmp; a=a/10; } printf("%d", res); return 0; } 1) 입력받은 a를 a%10을 통해 일의 자릿수만.. 2022. 7. 17.
[C/C++] 정수 자릿수의 합 구하기 알고리즘 문제를 풀다 보면 정수 각 자릿수의 합을 구하라는 문제가 있음. 주로 나는 입력된 정수값을 문자열 배열에 각 자릿수를 넣고, 그 자릿수를 각각 정수화해서 더했는 데, 이보다 쉬운 방법을 찾게 됨. 정수 자릿수의 합 구하기 #include int main() { int a=12345; int sum=0; while (a>0){ sum+=a%10; a=a/10; } printf("%d", sum); return 0; } 1) a를 10으로 나눈 나머지는 1의 자릿수이다. 그 값을 정수 sum 변수에 더한다. 2) a를 10으로 나눈 후 다시 반복한다. 이는 a를 10으로 나누면 0이 나올 때까지 반복한다. 그러면 모든 자릿수를 더한 값을 구할 수 있다. 2022. 7. 17.