[두번째 문제] 백준 / 1105 : 팔

문제를 해석해보면 8이 얼마나 범위 이내에서 같은자리수에 존재하는지를 찾는것이므로 string으로 자리수 비교를 통해서 풀 수 있다고 생각했다.

# include <iostream>
# include <string>
using namespace std;


int check(string L, string R) {
	if (L.length() != R.length()) {
		return 0;
	}
	else if (L[0] == R[0]) {
		if (L[0] == '8') {
			if (L.length() > 1) return 1 + check(L.substr(1), R.substr(1));
			else return 1;
		}
		else {
			if (L.length() > 1) return check(L.substr(1), R.substr(1));
			else return 0;
		}
	}
	else {
		return 0;
	}
}

int main() {
	string L, R;
	cin >> L >> R;

	int cnt = check(L, R);
	cout << cnt;
	return 0;
}

이 문제를 풀면서 느끼게 된 것은, 생각보다 예외처리를 꼼꼼하게 하기 힘들다는 것이다.

처음에는 첫자리가 8이 아닌경우에는 답이 없다고 생각해서 제외했었는데 1887 1888의 예외에 당했다.

따라서 코드를 무작정 작성하기보다는 정말 내가 세운 가설이 맞는지를 검증하는 단계가 필요할 것 같다.

ex) 8이 아닌수로 시작하면 절대 안되는것이 맞나?

좋은 웹페이지 즐겨찾기