[백준 15122] Forbidden Zero (C#, C++) - soo:bak
작성일 :
문제 링크
설명
현재 수 이후로 각 자리에 '0'
이 포함되지 않는 가장 가까운 다음 양의 정수를 찾는 문제입니다.
입력으로 주어지는 정수 n
은, 항상 0
이 포함되지 않은 양의 정수입니다.
이 정수보다 큰 수 중에서 각 자리에 0
이 포함되지 않는 다음 수 하나를 출력하면 됩니다.
예를 들어, n = 99
일 경우, 100
은 0
이 포함되므로 건너뛰고,
101
, 102
, ...
등도 모두 정답에서 제외되고 111
이 정답이 됩니다.
접근법
n
을1
씩 증가시키면서, 해당 정수에 대해 각 자릿수의 숫자가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;
}