[๋ฐฑ์ค] 12871๋ฒ - ๋ฌดํ ๋ฌธ์์ด (C++)
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);
}
ํ๊ธฐ
๋ฌธ์ ์์ฒด๋ ๊ฐ๋จํ์ง๋ง ๋๋ฆ ์ฌ๋ฏธ์์๋ค.