Posts 백준 1105 팔 c++
Post
Cancel

백준 1105 팔 c++

문제

https://www.acmicpc.net/problem/1105

문제해설

L과 R이 주어진다.
L부터 시작해서 R까지의 수 중에서
8이 가장 적게 들어있는 수의
8의 개수를 세어주면 된다.

문제풀이

아이디어만 떠올리면 구현은 어렵지 않다.

우선 두 숫자의 자리수가 다르다면 답은 무조건 0이다.
예를들어 88과 300이 주어진다면 그 사이에 무조건 100이 있기 때문이다.

그럼 자리수가 같을 때를 생각해보자
883802과 883824가 있다고하면
답은 3이 될 것이다.
왜냐하면 어떻게해도 앞의 8838은 바뀌지 않기 때문이다.
이제 느낌이 왔을텐데
가장 큰 자리수부터 보면서 각 자리수의 숫자가 달라질 때까지
8의 개수를 세어주면 된다.

전체코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<iostream>
using namespace std;

int main() {
	ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	string a, b; cin >> a >> b;
	if (a.length() != b.length()) {
		cout << 0;
		return 0;
	}

	int cnt = 0;
	for (int i = 0; i < a.length(); i++) {
		if (a[i] == b[i] && a[i] == '8')
			cnt++;
		else if (a[i] != b[i])
			break;
	}
	cout << cnt;
	return 0;
}

자바스크립트 비동기

sitemap.xml 오류 해결 expecting ';'

Comments powered by Disqus.