티스토리 뷰
문제링크 : https://www.acmicpc.net/problem/1105
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
string L, R;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cin >> L >> R;
if(L.size()!=R.size())
{
cout << 0;
return 0;
}
int cnt = 0;
for (int i = 0; i < L.size(); i++)
{
if (L[i] != R[i]) break;
if (L[i] == '8') cnt++;
}
cout << cnt;
return 0;
}
먼저 입력을 문자열을 통해 비교가 용이하도록 해준다.
만약 두 문자열의 길이가 다르다면 8의 개수가 없는 수가 무조건 발생할 수밖에 없다.
따라서 이 경우 바로 0을 출력하고 종료한다.
이후로는 L 문자열 사이즈만큼 현재 문자를 비교한다.
L에서 8이 존재하면 카운팅하지만, 만약 R과 다르다면 바로 종료한다.
L~R 범위내에 8이 가장 적게 들어있는 수를 찾는 것인데, 현재 위치가 둘 다 8이 아니라면 무조건 8이 필요없는 다른 수를 사용할 수 있다는 것이다.
따라서 L문자열 길이만큼 각 문자를 모두 체크하며 다른 경우 바로 종료하고, 둘 다 8로 같은 경우만 카운팅해주면 된다.
'백준 > 실버' 카테고리의 다른 글
[백준 3049번] 다각형의 대각선 (C++) (0) | 2025.04.26 |
---|---|
[백준 1459번] 걷기 (C++) (0) | 2025.04.23 |
[백준 3474번] 교수가 된 현우 (C++) (0) | 2025.04.18 |
[백준 14490번] 백대열 (C++) (0) | 2025.04.18 |
[백준 2312번] 수 복원하기 (C++) (0) | 2025.04.15 |