알고리즘 공부 및 문제 풀이/백준(BOJ)
[boj] 백준 1105 팔 (c++)
yoonjiy
2022. 6. 29. 21:37
[문제]
https://www.acmicpc.net/problem/1105
1105번: 팔
첫째 줄에 L과 R이 주어진다. L은 2,000,000,000보다 작거나 같은 자연수이고, R은 L보다 크거나 같고, 2,000,000,000보다 작거나 같은 자연수이다.
www.acmicpc.net
[풀이]
만약 두 수의 자릿수가 다르다면 답은 무조건 0이다. 그 사이에 10, 100, 1000 등이 존재하기 때문이다. 예를 들어, 1과 13 사이에는 10이, 120과 1200 사이에는 1000이 존재한다.
두 수의 자릿수가 같다면 앞에서부터 비교해봐야 한다. 8808과 8880에 대해 답은 2가 된다. 앞의 88은 바뀌지 않기 때문이다. 따라서 앞에서부터 각 자리수의 숫자가 달라질 때까지 비교해주며 8인 경우만 카운트 해준다.
[코드]
#include <iostream>
#include <algorithm>
#include <map>
#include <string>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
string l, r;
int cnt = 0;
cin >> l >> r;
if(l.length() != r.length())
cout << "0";
else{
for(int i=0; i<l.length(); i++){
if(l[i]==r[i] && l[i]=='8')
cnt++;
else if(l[i]!=r[i])
break;
}
cout << cnt;
}
}