강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

ji님의 프로필 이미지
ji

작성한 질문수

코딩테스트 실전 모의고사(with C++) : 대기업 대비

5-1 패턴찾기 문제 질문드립니다.

작성

·

211

0

5-1 패턴찾기 문제에서 강의에서 설명해주신 방법으로 문제를 풀게되면 패턴안에 반복되는 문자열이 있을 때 원하는 결과값을 얻지 못하지 않나요?

예를 들자면, 철수가 패턴을 "1231234"로 설정한 경우를 예시로 n이 14로 주어진다면, 

강사님이 풀어주신 방법으로  문제를 풀면 패턴은 "123"이 되어 결과값 27이 반환되나

실제기댓값은 패턴이 "1231234"가 되어 결과값 32가 반환되어야 옳은 결과값이라고 생각됩니다. 

저는 find함수를 통해 문제를 구현했습니다. 코드 확인도 같이 부탁드립니다. 

#include <iostream>
#include <string>

using namespace std;

int main(){
	string s;
	int n;
	
	cin >> s >> n;

	int cnt= 1;
	string pattern = s.substr(0,cnt);
	while(s.find(pattern,cnt+1)!=string ::npos){
		pattern = s.substr(0,++cnt);
	}
	int pattern_len= pattern.size();

	int res = 0;
	int len = pattern.size();
	
	for(int i=0; i<len; i++){
		res += pattern[i] - '0';
	}

	res = (n/len) * res;

	for(int i=0; i< n%len; i++){
		res += pattern[i] - '0';
	}

	cout << res << endl;
	return 0;
}

 

답변 1

0

김태원님의 프로필 이미지
김태원
지식공유자

안녕하세요^^

문제에서 패턴은 첫 번째 숫자부터 시작하고 처음으로 발견된 패턴이 문제에서 원하는 패턴이라고 해야 하는데 문제 설명이 부족했네요.

ji님의 프로필 이미지
ji

작성한 질문수

질문하기