작성일 :

문제 링크

15122번 - Forbidden Zero

설명

현재 수 이후로 각 자리에 '0'이 포함되지 않는 가장 가까운 다음 양의 정수를 찾는 문제입니다.

입력으로 주어지는 정수 n은, 항상 0이 포함되지 않은 양의 정수입니다.

이 정수보다 큰 수 중에서 각 자리에 0이 포함되지 않는 다음 수 하나를 출력하면 됩니다.


예를 들어, n = 99일 경우, 1000이 포함되므로 건너뛰고,

101, 102, ... 등도 모두 정답에서 제외되고 111이 정답이 됩니다.


접근법

  • n1씩 증가시키면서, 해당 정수에 대해 각 자릿수의 숫자가 0인지 확인합니다.
  • 조건을 만족하는 수가 발견되면 바로 출력합니다.



Code

C#

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;

class Program {
  static bool HasZero(int x) {
    while (x > 0) {
      if (x % 10 == 0) return true;
      x /= 10;
    }
    return false;
  }

  static void Main() {
    int n = int.Parse(Console.ReadLine());

    while (HasZero(++n));

    Console.WriteLine(n);
  }
}

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <bits/stdc++.h>
using namespace std;

bool hasZero(int x) {
  while (x) {
    if (x % 10 == 0) return true;
    x /= 10;
  }
  return false;
}

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

  int n; cin >> n;
  while (hasZero(++n));

  cout << n << '\n';

  return 0;
}