* 최적화된 답은 아니지만 공부한 것들의 기록을 위한 코드와 관련 지식을 정리하고자 합니다.
* 출제자가 원하는 답까지는 못 가도 일단 풀어내기 위한 노력을 하려 합니다. 한 단계 성장을 위해서 !
* 회사에서 C 쓰다 요즘 CPP을 쓰다보니까 두 언어가 섞여 쓰게 되었습니다. 충분히 고려하면서 cpp을 쓰기엔 문제 풀기에도 바쁜 시간..T^T
C - Iroha's Obsession
AtCoder is a programming contest site for anyone from beginners to experts. We hold weekly programming contests online.
atcoder.jp
/**
*
* 1000 8
1 3 4 5 6 7 8 9
N 이상 의 숫자 중
수열 D 를 갖고 있지 않는 최소 숫자 찾기
1 <= N <= 10000
*/
#include <iostream>
using namespace std;
bool isDone = false;
int main(void)
{
uint32_t N, K;
bool D[10]= { false, };
cin >> N >> K;
for(uint32_t i = 0 ; i < K; i++)
{
uint32_t d_input = 0 ;
cin >> d_input;
D[d_input] = true;
}
uint32_t Max = N*10;
uint32_t ret = 0;
for(uint32_t i = N; i< Max; i++)
{
uint32_t temp = i;
do
{
if(D[temp%10])
{
break;
}
}while(temp/=10);
if(temp == 0)
{
ret = i;
break;
}
}
cout << ret << endl;
return 0;
}
- brute force
문제 자체의 의미는 입력된 input N에 대해서 N 이상의 D1, D2, D3, ...을 포함하지 않는 수 찾기이다.
가능한 수의 범위는 N ~ N*10-1 이다.
예로 들어 입력된 N값이 92 면, 최대로 가능한 값이 919 이다. 920 이 될 경우 이미 d에 2, 9 가 없다는 뜻인데, 이 경우 N이 답으로 가능하기 때문이다.
그냥 가능한 값마다 자리를 검사하여 d 가 있는지 없는지 판별한다.
'알고리즘 문제 풀이 > AtCoder 문제 풀기' 카테고리의 다른 글
ABC 042_D. Iroha and a Grid (0) | 2023.02.26 |
---|---|
ABC 042_B. Iroha Loves Strings (ABC Edition) (0) | 2023.02.26 |
ABC 042_A. Iroha and Haiku (ABC Edition) (0) | 2023.02.26 |