본문 바로가기

Algorithm/Brute Force

(C++) - 백준(BOJ) 5671 : 호텔 방 번호

반응형

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

 

5671번: 호텔 방 번호

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

www.acmicpc.net

모든 경우의 수를 탐색하는 brute_force문제였습니다.

📕 풀이방법

📔 입력 및 초기화

n, m, ans를 선언한 후 EOF가 나올 때까지 n, m에 입력받습니다.

📔 풀이과정

1. n이상 m이하의 범위로 for loop를 수행하며 유효한 방 번호인지 확인해줍니다.

2. 유효여부는 isValid함수를 수행해 각 자리 수 vector cnt를 지역변수로 선언하여 모든 수가 2개 미만으로 나오는지 확인해주면 됩니다.

3. isValid라면 ans++해줍니다.

📔 정답출력

ans를 출력합니다.


📕 Code

#include <bits/stdc++.h>
using namespace std;
int n, m, ans;

bool isValid(string room){
  vector <int> cnt(10,0);
  for(int i = 0; i < room.size(); i++)
    cnt[room[i] - '0']++;
  for(int i = 0; i < 10; i++)
    if(cnt[i] >= 2) return false;
  return true;
}

int main(){
  while(cin >> n >> m){
    ans = 0;
    for(int i = n; i <= m; i++){
      string room = to_string(i);
      if(isValid(room)) ans++;
    }
    cout << ans << '\n';
  }
}