[문제]
https://www.acmicpc.net/problem/1105
[풀이]
만약 두 수의 자릿수가 다르다면 답은 무조건 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;
}
}
'알고리즘 공부 및 문제 풀이 > 백준(BOJ)' 카테고리의 다른 글
[boj] 백준 11052 카드 구매하기 (c++) - dp (0) | 2022.08.30 |
---|---|
[boj] 백준 2179 미로탐색 (c++) - BFS (0) | 2022.08.29 |
[boj] 백준 1300 k번째 수 (c++) - 이분 탐색 (0) | 2022.06.24 |
[boj] 백준 1655 가운데를 말해요 (C++) - heap (0) | 2022.06.23 |
[boj] 백준 9465 스티커 (c++) - dp (0) | 2022.06.22 |