728x90
반응형
SMALL
백준 문제 풀이: 30456 (쿠의 바닥수)
문제 링크: https://www.acmicpc.net/problem/30456
문제 설명:
쿠는 양의 정수 P에 대해, 그 자릿수의 모든 숫자를 곱한 값을 새로운 수로 계속 바꾸면서 하나의 값으로 수렴시키는 과정을 "바닥수"라고 정의하였다. 예를 들어, 1234 → 1×2×3×4 = 24 → 2×4 = 8 이므로, 1234의 바닥수는 8이다.
쿠는 바닥수를 계산하던 중, 바닥수 N과 숫자 P의 자릿수 길이 L만 남겨두고 정작 P를 잊어버렸다. 주어진 바닥수 N과 길이 L에 해당하는 P를 하나 출력해야 한다. 조건: P는 0으로 시작하지 않으며, 가능한 경우 중 아무거나 출력하면 된다.
문제 해결 코드
// 30456번: 쿠의 바닥수
// 바닥수가 N이 되기 위한 길이 L의 수 P 중 하나를 구성하여 출력
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, l;
cin >> n >> l;
// 바닥수 계산 시 모든 자리의 곱이 반복되므로,
// 첫 (l-1)자리는 1로 채우고 마지막 자리를 n으로 만들면
// 바닥수는 1⋅1⋅...⋅1⋅n = n이 된다.
for (int i = 0; i < l - 1; i++) {
cout << 1;
}
cout << n;
}
코드 설명
- 핵심 알고리즘: 바닥수 정의를 역으로 활용. 자리수의 곱이 N이 되도록 1로 채우고 마지막에 N을 붙이면 된다.
- 구현 세부사항:
l-1
개의 자리에는 모두 1을 넣고- 마지막 자리에는 N을 넣음 → 곱: 1⋅1⋯⋅N = N
- 처음에 0을 출력하지 않기 때문에 항상 유효한 양의 정수가 만들어짐
- 시간 복잡도 분석:O(L) — 길이 L만큼 반복
결과
바닥수가 N이 되는 길이 L짜리 양의 정수 P를 출력합니다.
예시 입력:
8 4
예시 출력:
1118
설명: 1×1×1×8 = 8 → 바닥수는 8이므로 조건 만족
답이 여러 개 존재할 수 있으므로 1118
처럼 간단한 형태로 출력하는 전략을 사용했습니다. 다른 아이디어가 있다면 댓글로 공유해주세요!
728x90
반응형
LIST
'BAEKJOON > 수학' 카테고리의 다른 글
백준 16488번 [피카츄가 낸 어려운 문제](C++) -yes6686- 티스토리 (0) | 2025.06.24 |
---|---|
백준 7571번 [점 모으기](C++) -yes6686- 티스토리 (0) | 2025.06.19 |
백준 33964번 [레퓨닛의 덧셈](C++) -yes6686- 티스토리 (0) | 2025.06.07 |
백준 2745번 [진법 변환](C++) -yes6686- 티스토리 (0) | 2025.05.23 |
백준 2903번 [중앙 이동 알고리즘](C++) -yes6686- 티스토리 (0) | 2025.05.23 |