백준 22351 수학은 체육과목 입니다. 3

2022. 5. 23. 14:50알고리즘/백준

728x90

처음 시작 수부터 숫자를 이어 붙였을 때 입력값과 같은 시작수를 찾고 끝나는 수를 찾는 문제이다. 

 

문제를 읽어보면 문자의 길이는 1이상 2889 이하라고 해놨다. 

 

일의 자리 수부터 100 의자 리수 까지 간다고 하면 대략 200줄 가까이 되고

 

1000의 자리수 까지가게되면 2900줄 정도 된다. 

 

그리고 입력값인 A B가 999이하인 것으로 미루어보아 

 

한 자릿수, 둘째 자릿수, 셋째 자릿수부터 시작하는 케이스를 만들고 입력값의 길이보다 작거나 같을 때까지 돌아가고 그전까지의 수를 string에 더하는 프로그램을 만들면 됩니다. 

 

 

#include <iostream>
#include <string>

using namespace std;

string S;

string A;
string B;
string C;

int startA, startB, startC;

int main(void) {
	ios_base::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);

	cin >> S;

	A += S[0];
	B += S[0]; B += S[1];
	C += S[0]; C += S[1]; C += S[2];

	startA = stoi(A);
	startB = stoi(B);
	startC = stoi(C);

	int endA = startA;
	int endB = startB;
	int endC = startC;

	while (1) {
		if (A.size() >= S.size()) break;
		endA++;
		A += to_string(endA);
	}

	while (1) {
		if (B.size() >= S.size()) break;
		endB++;
		B += to_string(endB);
	}

	while (1) {
		if (C.size() >= S.size()) break;
		endC++;
		C += to_string(endC);
	}

	if (!A.compare(S)) {
		cout << startA << ' ' << endA;
	}
	else if (!B.compare(S)) {
		cout << startB << ' ' << endB;
	}
	else if (!C.compare(S)) {
		cout << startC << ' ' << endC;
	}


	return 0;
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

백준 17478  (0) 2022.05.31
백준 24479 C++  (0) 2022.05.28
백준 4150 피보나치 수(c++)  (0) 2022.04.02
(C++) 백준 1111번 IQ Test  (0) 2021.12.01
백준 다리놓기 1010 C++  (0) 2021.11.26