[λ°±μ€ c++] 1105 ν (μ€1)
π λ¬Έμ
μ«μ Lκ³Ό Rμ΄ μμ λ, μ«μ λ κ° μ¬μ΄μ 8μ κ°μ₯ μ΅μλ‘ κ°μ§λ μ«μμ 8μ κ°μλ₯Ό μΆλ ₯νλ λ¬Έμ λ€.
λ¨Όμ μκ°λλ λ°©λ²μ LλΆν° RκΉμ§μ μ«μλ€μ μ리μλ₯Ό νλμ© κ΅¬ν΄μ μ΅μ κ°μ ꡬνλ€κ³ μκ°ν μλ μλ€.
νμ§λ§ λͺ μ¬ν μ μ κ΅³μ΄ μ°λ¦¬κ° νλμ© νμΈν νμκ° μμ΄ μκ° νλλ‘ λ°κΏ μ μλ€λ μ μ΄λ€.
첫λ²μ§Έ, Lκ³Ό Rμ μ리μμμ λΆλͺ ν 곡ν΅λ λΆλΆμ΄ μμ κ²μ΄λ€.
곡ν΅λ μ리μμ μλ 8μ κ°μλ Lκ³Ό Rμ μ¬μ΄μ μλ μ«μλ€λ 무쑰건 κ°μ§κΈ° λλ¬Έμ μμΌλ‘ μ νμκ° μλ€λ κ².
λλ²μ¬, μ°λ¦¬λ 8μ΄λΌλ μ«μλ₯Ό μ°λ κ²μ νΌνλ κ²μ΄λ€.
κ·Έλ¬λ―λ‘ Lκ³Ό Rμ¬μ΄μ μ«μ μ¬μ΄μ 8 μ΄μμΈμ μ리μλ₯Ό κ°μ§λ μ«μκ° λΆλͺ ν μ‘΄μ¬νλ€λ©΄ κ΅³μ΄ 8μ μΈ νμκ° μλ€λ κ²μ΄λ€.
μ΄λ° μ μ κ³ λ €νμ λ Brute Forceλ‘ κ³μ°νμ§ μκ³ μ΅μ κ°μ ꡬν μ μλ€.
[μ¬λ΄]
κ°μΈμ μΌλ‘ μ€λ²1 λμ΄λ μΉκ³ μ¬μ΄ νΈμ΄λ€...
μ½λ©ν μ€νΈμλ μ΄λ° λ¬Έμ κ° λμμΌλ©΄ νμ§λ§ ν λ²λ κ·Έλ° μ μ μμλ€.....γ ...^^
μμ¦ μΆμΈκ° λ€ κ΅¬ν, DFS, BFS μ΄μͺ½μ΄ λ§μ΄ λμμ..γ
μ΄λ κ² λ¨Έλ¦¬ κ΅΄λ €μ νΈλ λ¬Έμ (?)λ μμ λ μΆμΈλ€. λλ€ λΉ‘μΈκΈ° λλ¬Έμ....
π» μ λ΅ μ½λ
#include <iostream>
using namespace std;
int main()
{
int L, R; cin >> L >> R;
//8μ μ΅μκ°μΈ λ¬Έμ .
//κ²°κ΅ λ΄κ° 8μ μ΄μ©μ μμ΄ νμ΄μΌνλ κ²½μ°λ
//λ κ°μ μ«μ μ¬μ΄μ 곡ν΅λ μ«μκ° λ κ²½μ°μ.
//νΉνλ
int lowNum[10];
int highNum[10];
//μ«μ μͺΌκ°κΈ°
int low = L;
int Lidx = 0;
while(low != 0){
//κ°μ₯ μλ μ리μλ₯Ό λ°°μ΄μ μ μ₯
lowNum[Lidx++] = low % 10;
low /= 10;
}
int high = R;
int Ridx = 0;
while(high != 0){
//κ°μ₯ μλ μ리μλ₯Ό λ°°μ΄μ μ μ₯
highNum[Ridx++] = high % 10;
high /= 10;
}
//λμ΄ μ리μκ° λ€λ₯Ό κ²½μ°, 무쑰건 0
if(Lidx != Ridx){
cout << 0 << endl;
return 0;
}
int max = Lidx;
int cnt = 0;
//κ°μ μ«μκ° λͺ κ°μΈμ§ νμΈ
for(int i = max - 1; i >=0 ; i--){
//μ«μκ° κ°μ κ²½μ°
if(lowNum[i] == highNum[i]){
// κ·Έ μ«μκ° 8μΌ κ²½μ°
if(lowNum[i] == 8) cnt++;
}
//μλ κ²½μ°λ λ³Ό νμλ μμ΄ ν¨μ€
else break;
}
cout << cnt << endl;
return 0;
}