본문 바로가기

c언어93

[C/C++] 코드업 1920 : (재귀함수) 2진수 변환 문제풀이 10진수를 2진수로 바꾸는 내용임. 재귀 함수로 푸는 데, 쉽게 얘기해서 2로 나누는 작업을 계속해서 하는 것임. 그리고 쪼갤 수 있을 때까지 쪼갠 후, 그 후부터 하나씩 내려오면서 2로 나눈 나머지를 출력함. 이때 왜 마지막까지 쪼갠 후의 나머지 값부터 출력할까? 이는 가장 높은 수부터 작은수까지 출력하기 때문임. 예를 들어 33라고 해 보겠음. 이진수로 10 0001이 됨. 비트 5번과 0번. 33은 2로 5번 나눠짐. 6번째 나눌 땐 0이고. 2로 5번 나눴으면 이미 2^5라는 의미이고 그 값부터 출력해야 하는 것임. 이미 32라는 값을 10 0000으로 올려줬으니, 남은 숫자는 1만 남았음. 각각 2^4일 때 나머지 0 일 것이고, 2^3일 때 나머지 0일 것이고..... 마지막으로 2^.. 2022. 10. 8.
[C/C++] 코드업 1805 : 입체기동장치 생산공장 문제풀이 일차 배열로도 풀 수 있는 문제이지만, 문제 카테고리에 맞게 구조체를 이용하여 풀었다. 즉, 구조체 + 벡터 + 정렬을 통해 풀었다. 이 조합은 알고리즘 문제에서 종종 볼 수 있는 조합이고 단골 문제 풀이법이다. 우선 gas라는 구조체를 만들고 이를 사용하는 벡터를 만듦. 그럼 이 벡터는 gas라는 구조체를 사용하는 벡터가 됨. struct gas{ int x; int y; }; vector v; 입력 부분은 생략하고 정렬하는 부분을 살펴 보도록 하겠음. bool cmp(gas A, gas B) { if (A.xa.x>>a.y; v.push_back({a.x,a.y}); } sort(v.begin(), v.end(), cmp); for (int i=0; i 2022. 10. 8.
[C/C++] 코드업 1901 : (재귀 함수) 1부터 n까지 출력하기 문제 풀이 이 문제는 1부터 n까지 재귀 함수를 통해 출력하는 문제임. 재귀 함수의 핵심은 1) 재귀 함수 내에 if 조건과 return문을 통해 재귀 함수를 멈춰주는 것 2) 다음 함수를 조건에 맞게 적절하게 불러주는 것 이렇게 두 가지라고 할 수 있고, 이 원리는 다른 재귀함수 문제에도 통용됨. 이 문제는 n까지 출력하는 것이므로 n을 만나게되면 재귀 함수 호출을 그만두도록 조건을 걸면 됨. 문제풀이 #include #include #include using namespace std; int n; void recursive(int a) { if (a==n) { cout 2022. 10. 4.
C언어 백준 11726번 2×n 타일링 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 문제풀이 #include int arr[1001]; int num; void solution(int n); int main(void) { scanf("%d",&num); solution(num); } void solution(int n) { int i; arr[0]=1; arr[1]=1; for(i=2;i 2022. 5. 28.