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에서 냈던 코드를 그대로 냈는데, 한 번에 통과했습니다!
'PS (C, C++)' 카테고리의 다른 글
[백준/C++] 1963 소수 경로 (0) | 2024.10.02 |
---|---|
[백준/C++] 2234 성곽 (0) | 2024.10.01 |
[백준/C++] 2637 장난감 조립 (0) | 2024.09.24 |
[백준/C++] 24392 영재와 징검다리 (0) | 2024.09.23 |
[백준/C++] 14231 박스 포장 (0) | 2024.09.23 |