PS (C, C++)
[백준/C++] 14382 숫자세는 양 (Large)
최연재
2024. 9. 25. 12:41
https://www.acmicpc.net/problem/14382
코드
#include <iostream>
#include <map>
using namespace std;
#define FASTIO ios::sync_with_stdio(false);cin.tie(NULL);
typedef long long ll;
int main() {
FASTIO;
ll t, n, ans, v;
cin >> t;
for (int i = 0; i < t; i++) {
cin >> v;
ans = v;
map<int, int> m;
if (v == 0) cout << "Case #" << i + 1 << ": " << "INSOMNIA" << "\n";
else {
for (ll j = 1, tmp; ; j++) {
ans = v * j;
tmp = ans;
while (tmp) {
m[tmp % 10]++;
tmp /= 10;
}
if (m.size() == 10) break;
}
cout << "Case #" << i + 1 << ": " << ans << "\n";
}
}
return 0;
}
설명
연산과정에서 값이 커질 수 있으므로 변수는 편의상 모두 long long 타입으로 통일했습니다.
테스트 케이스의 개수와 매번 테스트 데이터를 입력받은 후 0~9까지의 등장 횟수를 map으로 관리합니다. while문에서 숫자를 세어준 후 map의 크기가 10이라면 현재의 ans 값을 출력하면 됩니다.
느낀 점
변수의 범위가 작은 small 문제(BOJ 14381)를 풀고 Large 문제를 보러 갔습니다. 생각보다 변수의 범위가 크지 않아서 small에서 냈던 코드를 그대로 냈는데, 한 번에 통과했습니다!