백준 5671

aiden·2025년 11월 5일

백준 문제풀이

목록 보기
5/11

문제 링크 : https://www.acmicpc.net/problem/5671
풀이 :

#include <iostream>
using namespace std;

/*
선영이는 집 호수에 반복되는 숫자가 있는 경우에는 그 집에 사는 사람에게 불운이 찾아온다고 믿는다. 따라서, 선영이는 838호나 1004호와 같이 한 숫자가 두 번 이상 들어있는 집에는 절대 살지 않을 것이다.

2050년, 선영이는 한국에서 가장 돈이 많은 사람이 되었다. 그녀는 해변가에 새로운 호텔을 하나 지으려고 한다. 하지만, 투숙객에게 불운이 찾아오는 것을 피하기 위해서 반복되는 숫자가 없게 방 번호를 만들려고 한다.

정부는 선영이의 호텔 방 번호는 N보다 크거나 같고, M보다 작거나 같아야 한다는 조건을 걸고 신축 허가를 내주었다. 선영이의 새 호텔에는 방이 최대 몇 개 있을 수 있을까? (두 방이 같은 방 번호를 사용할 수 없다)


*/

bool isValid(int n) {
	bool seen[10] = { false, };
	if (n == 0) {
		return true;
	}

	while (n > 0) {
		int digit = n % 10;

		if (seen[digit]) {
			return false;
		}
		seen[digit] = true;

		n /= 10;
	}
	return true;
}

int main() {
	int n, m;
	int cnt = 0;
	while (cin >> n >> m) {
		for (int i = n; i <= m; ++i) {
			if (isValid(i)) {
				cnt++;
			}
		}

		cout << cnt << endl;
		cnt = 0;
	}

}

단순한 브루트 포스 문제다.
조건을 만족하는 수를 찾을 때 마다 카운트를 늘려주면 된다.

profile
All's well that ends well

0개의 댓글