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에서 냈던 코드를 그대로 냈는데, 한 번에 통과했습니다! 

'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