Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- boj 2206
- 백준 10800
- boj 2108
- 2167
- boj 2167
- boj 19238
- 백준 2635
- boj 1806
- 백준 2167
- 백준 2661
- 백준 2108
- boj 2661
- boj 2635
- 백준 1697
- boj 10800
- boj 2178
- 백준 1806
- 백준 19238
- 백준 2470
- boj 1503
- 백준 2178
- boj 1697
- boj 2470
- 10800
- 백준 2636
- boj 2636
- 2636
- 백준 2206
- boj 2667
- 백준 1503
Archives
- Today
- Total
말랑말랑한 개발자 이야기
[백준 5671번] 호텔 방 번호 본문
[백준 5671번] 호텔 방 번호
문제
선영이는 집 호수에 반복되는 숫자가 있는 경우에는 그 집에 사는 사람에게 불운이 찾아온다고 믿는다. 따라서, 선영이는 838호나 1004호와 같이 한 숫자가 두 번 이상 들어있는 집에는 절대 살지 않을 것이다.
2050년, 선영이는 한국에서 가장 돈이 많은 사람이 되었다. 그녀는 해변가에 새로운 호텔을 하나 지으려고 한다. 하지만, 투숙객에게 불운이 찾아오는 것을 피하기 위해서 반복되는 숫자가 없게 방 번호를 만들려고 한다.
정부는 선영이의 호텔 방 번호는 N보다 크거나 같고, M보다 작거나 같아야 한다는 조건을 걸고 신축 허가를 내주었다. 선영이의 새 호텔에는 방이 최대 몇 개 있을 수 있을까? (두 방이 같은 방 번호를 사용할 수 없다)
입력
입력은 여러 개의 테스트 케이스로 이루어져 있고, 한 줄이다. 각 줄에는 문제의 설명에 나와있는 N과 M이 주어진다. (1 ≤ N ≤ M ≤ 5000)
출력
각각의 테스트 케이스에 대해서 N보다 크거나 같고, M보다 작거나 같은 수 중에서 반복되는 숫자가 없는 것의 개수를 출력한다.
풀이
#include <iostream>
using namespace std;
int t[5001];
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
for(int i=1;i<=5000;i++){
int v = 1;
int temp = i;
bool check[10] = {0,};
while(temp!=0){
if(check[temp%10]){
v = 0;
break;
}
check[temp%10] = true;
temp = temp/10;
}
t[i] = t[i-1] + v;
}
int a, b;
while(cin >> a >> b){
cout << t[b] - t[a-1] << '\n';
}
return 0;
}
이런 문제에서 시간초과로 데인적이 많아서 보자마자 누적합으로 해결했다. 근데 문제를 풀고보니 알고리즘 분류에 누적합이 없었다. 이럴때 뭔가 기분이 좋았다.
'알고리즘 > 백준' 카테고리의 다른 글
[백준 20058번] 마법사 상어와 파이어스톰 (0) | 2021.09.14 |
---|---|
[백준 21922번] 학부 연구생 민상 (0) | 2021.09.14 |
[백준 7453번] 합이 0인 네 정수 (0) | 2021.09.14 |
[백준 9847번] 4SUM (0) | 2021.09.14 |
[백준 19951번] 태상이의 훈련소 생활 (0) | 2021.09.14 |