문제
문자열 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을 출력한다.
풀이 과정
f(s) 와 f(t) 가 같은 문자열이려면, f(s) 와 f(t) 의 길이가 같아야 한다.
s 와 t를 각각 len(s)*len(t) 만큼 으로 만든다. s 는 len(t) 만큼 붙이고, t는 len(s) 만큼 붙이면 len(s) * len(t) 길이가 된다.
이렇게 만든 문자열이 동일한지 확인한다.
C
#include <stdio.h>
#include <string.h>
char s[55], t[55], fs[3000] = {0,}, ft[3000] = {0,};
int main(void) {
scanf("%s", s);
scanf("%s", t);
for (int i = 0; i < strlen(t); i++) strcat(fs, s);
for (int i = 0; i < strlen(s); i++) strcat(ft, t);
if (strcmp(fs, ft) == 0) printf("1");
else printf("0");
return 0;
}
Python
import sys
input = sys.stdin.readline
s = input().rstrip()
t = input().rstrip()
ns = s * len(t)
nt = t * len(s)
print(1 if ns == nt else 0)
'-- 예전 기록 > BOJ' 카테고리의 다른 글
[ BOJ ] 1076 : 저항 ( BRONZE 2 ) / C, Python (0) | 2023.11.19 |
---|---|
[ BOJ ] 20114 : 미아 노트 ( SILVER 5 ) / C, Python (0) | 2023.11.18 |
[ BOJ ] 11944 : NN ( BRONZE 2 ) / C, Python (0) | 2023.11.17 |
[ BOJ ] 3059 : 등장하지 않는 문자의 합 ( BRONZE 3 ) / C, Python (0) | 2023.11.17 |
[ BOJ ] 10825 : 국영수 ( SILVER 4 ) / Python (0) | 2023.11.17 |