반응형
https://www.acmicpc.net/problem/11585
11585번: 속타는 저녁 메뉴
수원이와 친구들은 저녁 메뉴를 잘 선택하지 못한다. 배가 고픈 수원이가 보다 못해 메뉴를 정하곤 하는데 이마저도 반대에 부딪히는 경우에는 수원이가 원형 룰렛을 돌려 결정하곤 한다. 이 원
www.acmicpc.net
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class B11585 {
static int[] getPi(String Pattern) {
int[] pi = new int[Pattern.length()];
int j = 0;
for (int i = 1; i < Pattern.length(); i++) {
while (j > 0 && Pattern.charAt(i) != Pattern.charAt(j)) {
j = pi[j - 1];
}
if (Pattern.charAt(i) == Pattern.charAt(j)) {
pi[i] = ++j;
}
}
return pi;
}
static int GCD(int a, int b) {
if (a > b) {
int tmp = a;
a = b;
b = tmp;
}
while (a % b != 0) {
int tmp = a % b;
a = b;
b = tmp;
}
return b;
}
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
StringTokenizer st;
StringBuilder sb = new StringBuilder();
st = new StringTokenizer(br.readLine());
while (st.hasMoreTokens()) {
sb.append(st.nextToken().charAt(0));
}
br.readLine();
// System.out.println(Arrays.toString(getPi(sb.toString())));
int[] Pi = getPi(sb.toString());
int son = 1;
if (N != 1 && Pi[N - 1] != 0) {
son = N / (Pi[N - 1] - Pi[Pi[N - 1] - 1]);
}
int gcd = GCD(N, son);
son /= gcd;
N /= gcd;
System.out.println(son + "/" + N);
}
}
반응형
'ProgramSoliving' 카테고리의 다른 글
백준 : 6543 (0) | 2020.07.15 |
---|---|
백준 : 6497 (0) | 2020.07.14 |
백준 : 1305 (광고) java (0) | 2020.07.13 |
백준 : 4920 (0) | 2020.05.31 |
백준 : 18809 (0) | 2020.05.30 |