728x90
반응형
2024.05.10기준 - 실버5
백준, BEAKJOON, BOJ, JAVA, 자바
풀이
이 문제는 문자열 s와 t를 입력 받고 무한번 반복되는 문자열을 만들어야 합니다.
그 후 두 문자열을 비교하여 같은지 확인하는 문제입니다.
저는 이 문제를 접근할때, 문자열이 서로 같으면 비교하기가 쉬울거 같아 문자열 길이를 먼저 계산한 후 접근했습니다.
- 두 문자열의 길이를 비교하여 특정 길이를 결정합니다.
- 문자열이 같은 경우 반복되도 같은 문자열이 나오기 때문에 길이를 늘리지 않습니다.
- s문자열이 t문자열보다 크고 (s문자열길이) % (t문자열길이) 가 0이면 s문자열길이로 지정합니다.
- t문자열이 s문자열보다 크고 (t문자열길이) % (s문자열길이) 가 0이면 t문자열길이로 지정합니다.
- 그 외에는 s문자열길이 와 t문자열길이를 곱하여 길이를 지정했습니다. - 특정 길이만큼 문자열을 반복문으로 붙여 생성했습니다.
- 그럼 다음 문자열이 같은지 확인하여 결과를 출력합니다.
코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
String s = br.readLine();
String t = br.readLine();
int sLen = s.length();
int tLen = t.length();
int len = 0;
if (sLen == tLen) { // 두 문자열의 길이가 같은 경우
len = sLen;
} else if (sLen > tLen && sLen % tLen == 0) { // s가 t보다 길고 sLen % tLen == 0인 경우
len = sLen;
} else if (tLen > sLen && tLen % sLen == 0) { // t가 s보다 길고 tLen % sLen == 0인 경우
len = tLen;
} else { // 그 외의 경우
len = sLen * tLen;
}
StringBuilder sstr = new StringBuilder(s);
StringBuilder tstr = new StringBuilder(t);
while (sstr.length() < len) {
sstr.append(s);
}
while (tstr.length() < len) {
tstr.append(t);
}
if (sstr.toString().equals(tstr.toString())) { // f(s)와 f(t)가 같은지 확인하기
sb.append(1);
} else {
sb.append(0);
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
728x90
반응형
'코딩테스트 일기 (BAEKJOON)' 카테고리의 다른 글
BAEKJOON / 백준 - JAVA 31712번 핑크빈 레이드 (0) | 2024.05.11 |
---|---|
BAEKJOON / 백준 - JAVA 14940번 쉬운 최단거리 (0) | 2024.05.10 |
BAEKJOON / 백준 - JAVA 11053번 가장 긴 증가하는 부분 수열 (0) | 2024.05.10 |
BAEKJOON / 백준 - JAVA 10833번 사과 (0) | 2024.05.09 |
BAEKJOON / 백준 - JAVA 31799번 평점 변환 (0) | 2024.05.08 |