※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 12924번 문제인 멋진 숫자 쌍이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/12924 

 

12924번: 멋진 숫자 쌍

첫 번째 줄에 두 자연수 A, B가 주어진다. (A ≤ B ≤ 2,000,000, A와 B의 자릿수 개수는 같다.)

www.acmicpc.net

주어지는 입력의 크기를 확인하자.

각 범위의 수에 대하여, 모두 한번씩 떼었다 붙여도 충분한 시간이 남을 것 같지 않은가?

가장 많이 확인해봐야 할 100만~200만 범위에서도 약 100만개의 수의 6가지 배치, 약 600만개의 경우의 수만을 조사해보는 것으로 충분히 문제를 해결할 수 있다는 점을 관찰해내면, 남은 것은 구현 뿐이다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <set>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int L, R; cin >> L >> R;
	int ans = 0;
	for (int i = L; i < R; i++) {
		set<int> st;
		int tmp1 = 10;
		int tmp2 = 1;
		while (tmp2 <= L) tmp2 *= 10;
		tmp2 /= 10;
		while (tmp1 < i) {
			int temp = (i % tmp1) * tmp2 + i / tmp1;
			if (i < temp && temp <= R) {
				if (st.find(temp) == st.end()) {
					st.insert(temp);
					ans++;
				}
			}
			tmp1 *= 10;
			tmp2 /= 10;
		}
	}

	cout << ans;
}
728x90

+ Recent posts