Algorithm/๋ฌธ์ œํ’€์ด

[๋ฐฑ์ค€] 12871๋ฒˆ - ๋ฌดํ•œ ๋ฌธ์ž์—ด (C++)

moaoh 2023. 9. 21. 22:47

 

12871๋ฒˆ: ๋ฌดํ•œ ๋ฌธ์ž์—ด

์ฒซ์งธ ์ค„์— s, ๋‘˜์งธ ์ค„์— t๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘ ๋ฌธ์ž์—ด s์™€ t์˜ ๊ธธ์ด๋Š” 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. 

www.acmicpc.net

๋ฌธ์ œ

๋ฌธ์ž์—ด s๊ฐ€ ์žˆ์„ ๋•Œ, f(s)๋Š” s๋ฅผ ๋ฌดํ•œ๋ฒˆ ๋ถ™์ธ ๋ฌธ์ž์—ด๋กœ ์ •์˜ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, s = "abc" ์ธ ๊ฒฝ์šฐ์— f(s) = "abcabcabcabc..."๊ฐ€ ๋œ๋‹ค.

๋‹ค๋ฅธ ๋ฌธ์ž์—ด s์™€ t๊ฐ€ ์žˆ์„ ๋•Œ, f(s)์™€ f(t)๊ฐ€ ๊ฐ™์€ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ, s = "abc", t = "abcabc"์ธ ๊ฒฝ์šฐ์— f(s)์™€ f(t)๋Š” ๊ฐ™์€ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ ๋‹ค.

s์™€ t๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, f(s)์™€ f(t)๊ฐ€ ๊ฐ™์€ ๋ฌธ์ž์—ด์„ ๋งŒ๋“œ๋Š”์ง€ ์•„๋‹Œ์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— s, ๋‘˜์งธ ์ค„์— t๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๋‘ ๋ฌธ์ž์—ด s์™€ t์˜ ๊ธธ์ด๋Š” 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๊ณ , ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค. 

 

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— f(s)์™€ f(t)๊ฐ€ ๊ฐ™์œผ๋ฉด 1์„, ๋‹ค๋ฅด๋ฉด 0์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

 

ํ’€์ด๊ณผ์ •

๋ฌธ์ œ์—์„œ ์š”๊ตฌํ•˜๋Š” ์‚ฌํ•ญ๋“ค๊ณผ ๋ฐ˜๋ก€๋“ค์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

s์™€ t๋ฅผ ๋ฌดํ•œํ•˜๊ฒŒ ๋Š˜์–ดํŠธ๋ ค๋‘์—ˆ์„๋•Œ ๋‘๊ฐœ์˜ ๋ฌธ์ž์—ด์ด ๊ฐ™์€ ๊ฒฝ์šฐ 1, ๋‹ค๋ฅธ๊ฒฝ์šฐ 0

1. f(s) = ab, f(t) = abab / output : 1

2. f(s) = aa, f(t) = aaa / output : 1

3. f(s) = abc, f(t) = abca / output : f(s) = 0 -> abcabc... , f(t) = abcaabca...

1๋ฒˆ๊ณผ 2๋ฒˆ์€ ์–ด๋ ต์ง€์•Š๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ 3๋ฒˆ์— ๊ฒฝ์šฐ 2๋ฒˆ๊ณผ ๋ฐ˜๋ก€ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฒน์ณ ์–ด๋–ป๊ฒŒํ• ๊นŒ ๊ณ ๋ฏผ์„ ํ•˜๋‹ค๊ฐ€ ๊ทธ๋ƒฅ ๋ฌธ์ž์—ด์„

s * 2 ์™€ t * 2๋ฅผ ์„œ๋กœ ๋น„๊ตํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ์„ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.

 

code

#include <iostream>
#include <string>

void	strCheck(std::string str1, std::string str2)
{
	int len = 0;

	for (int i = 0; i < str1.length(); i++) {
		if (len == str2.length()) len = 0;
		if (str1[i] == str2[len]) len++;
		else {
			std::cout << "0" << "\n";
			return ;
		}
	}
	std::cout << "1" << "\n";
	return ;
}

int		main(void)
{
	std::string s, t;

	std::cin >> s >> t;
	if (s.length() <= t.length()) strCheck(t + t, s + s);
	else strCheck(s + s, t + t);

	return (0);
}

 

ํ›„๊ธฐ

๋ฌธ์ œ์ž์ฒด๋Š” ๊ฐ„๋‹จํ–ˆ์ง€๋งŒ ๋‚˜๋ฆ„ ์žฌ๋ฏธ์žˆ์—ˆ๋‹ค.