문제1
10 진수를 입력으로 받아 이진수로 변경하는 프로그램을 작성하시오.
입력
- 입력으로 1000 이하의 자연수가 주어진다.
출력
- 이진수로 변환된 자연수
풀이
이진수로 변환은 2로 계속나누다가 몫이 1이거나 없을때 지금까지 나온 나머지를 역순으로 출력하면 된다,
11 % 2 = 1
11 / 2 = 5
---
5 % 2 = 1
5 / 2 = 2
---
2 % 2 = 0
2 / 2 = 1
---
1
---
1011
따라서 점화식을 k의 2진수 출력인 print(k)로 정한다.
print(k) = print(k/2) (+) cout << k%2
void print(int n)
{
if (n > 1) print(n / 2);
cout << n%2;
}
int main()
{
int n;
cin >> n;
print(n);
}
문제2
봉우리가 여러개인 산 모양을 출력한다. 산 모양은 그림과 같고 좌우 대칭이다.
출력 예시를 보면
1 -> 1
2 -> 121
3 -> 1213121
즉 제일 높은 봉우리 옆에는 이전 크기의 봉우리가 양 옆에 온다.
따라서 점화식을 세워보면
m(k) = m(k-1) (+) cout << k (+) m(k-1)
void m(int n)
{
if (n == 1) {
cout << 1;
return;
}
m(n - 1);
cout << n;
m(n - 1);
}
int main()
{
int n;
cin >> n;
m(n);
}
'Algorithm' 카테고리의 다른 글
[Algorithm] 트리에서 BFS, DFS (0) | 2025.04.02 |
---|---|
[Algorithm] 다익스트라 (0) | 2025.04.01 |
[Algorithm] 백준 2579 - 계단 오르기 (0) | 2025.03.14 |
[Algorithm] 옥상 정원 꾸미기 (백준 6198) (0) | 2024.12.29 |
[Algorithm] 에디터 문제 풀이 (1) | 2024.12.22 |