※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 27494번 문제인 2023년은 검은 토끼의 해이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/27494
27494번: 2023년은 검은 토끼의 해
흑묘 복권의 티켓 수 $N$이 주어진다. $(1 \leq N \leq 10\,000\,000)$
www.acmicpc.net
어떤 수가 당첨티켓의 번호인지를 확인하는 것은 각 수를 문자열로 생각했을 때 첫자리부터 순서대로 살펴보면서 "2023"을 만들기 위해 남은 필요한 첫번째 자리를 반복해서 탐색해나가는 것을 시도하는 것으로 해낼 수 있다.
당첨티켓인지를 확인할 티켓의 번호는 항상 8자리 이하이고 확인해야 할 티켓의 개수는 많아야 1000만개이므로(입력제한), 1부터 N까지의 모든 정수를 하나하나 당첨티켓의 번호로 가능한 정수인지 확인하는 것으로 문제를 충분히 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
using namespace std;
int N, ans;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N;
for (int i = 1; i <= N; i++) {
string s = to_string(i);
int slen = s.length(), idx = 0;
while (idx < slen && s[idx] != '2') idx++;
if (idx == slen) continue;
while (idx < slen && s[idx] != '0') idx++;
if (idx == slen) continue;
while (idx < slen && s[idx] != '2') idx++;
if (idx == slen) continue;
while (idx < slen && s[idx] != '3') idx++;
if (idx == slen) continue;
ans++;
}
cout << ans;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 2528 // C++] 사다리 (0) | 2023.02.23 |
---|---|
[BOJ 24314 // C++] 알고리즘 수업 - 점근적 표기 2 (0) | 2023.02.23 |
[BOJ 27495 // C++] 만다라트 만들기 (0) | 2023.02.23 |
[BOJ 24315 // C++] 알고리즘 수업 - 점근적 표기 3 (0) | 2023.02.23 |
[BOJ 27496 // C++] 발머의 피크 이론 (0) | 2023.02.23 |