문제 : https://www.acmicpc.net/problem/1105
[알고리즘풀이]
L 부터 R 까지의 수 중에서 8이 제일 적은 수를 찾는 문제다.
먼저, L 과 R의 자릿수가 다르다면 무조건 8을 하나도 안쓰는 수를 만들 수 있다.
ex) L은 3자리, R은 4자리 숫자이면 사이에는 1000이 무조건 존재한다.
L 과 R의 자릿수가 같다면, 자릿수가 큰 쪽부터 순회를 해주며 check를 해야 된다.
i번 째 자릿수인 L[i] 와 R[i] 가 모두 8이라면 i번 째 자릿수는 8이 와야 된다.
하지만, 그전에 L[j] 와 R[j] (j < i) 에서 숫자가 다른 적이 있다면 i번 째 값은 항상 8이 아닌 사이에 있는 수를 집어넣을 수 있다.
ex)
78 88 에서 첫 번째 자릿수가 7과 8로 다르므로, 그 뒤에 자릿수는 8이 아닌 다른 사이에 있는 수를 무조건 넣을 수 있다.
#include<iostream>
#include<string>
using namespace std;
int main(void) {
ios::sync_with_stdio(false);
cin.tie(0);
string L, R;
cin >> L >> R;
int ans = 0;
if(L.length() == R.length()){
bool flag = false;
for (int i = 0; i < L.length(); i++) {
if (L[i] != R[i])
flag = true;
if (flag)
continue;
if (L[i] == R[i] && L[i] == '8')
ans++;
}
}
cout << ans;
}
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ] 1485 : 정사각형 - travelbeeee (0) | 2019.11.05 |
---|---|
[BOJ] 5557 : 1학년 - travelbeeee (0) | 2019.11.03 |
[BOJ] 12840 : 창용이의 시계 -travelbeeee (0) | 2019.10.31 |
[BOJ] 12847 : 꿀 아르바이트 - travelbeeee (0) | 2019.10.31 |
[BOJ] 11778 : 피보나치 수와 최대공약수 - travelbeeee (0) | 2019.10.31 |