https://www.acmicpc.net/problem/9324
μ½λ
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int t = scan.nextInt();
for(int tc=0; tc<t; tc++) {
String str = scan.next();
int[] alpa = new int[26];
boolean flag = true;
String result = "";
for(int i=0; i<str.length(); i++) {
alpa[str.charAt(i) - 'A'] ++;
// λμΌν μνλ²³μ΄ 3λ² λ±μ₯νμ κ²½μ°,
if(alpa[str.charAt(i) - 'A'] == 3) {
// λ§μ§λ§ λ¬Έμμ λλ¬νμλ λμΌν λ¬Έμκ° 3λ²μ΄λ©΄ λ¬Έμκ° μ½μ
μ΄ μλκ²½μ°μ΄λ―λ‘ νλ¦° λ¬Έμ.
if(i == str.length()-1) {
flag = false;
break;
}
// λ¬Έμλ₯Ό ν λ² μ½μ
ν΄μΌνλλ° μλ€ λ€λ₯΄λ©΄ νλ¦° λ¬Έμ.
if(str.charAt(i) != str.charAt(i+1)) {
flag = false;
break;
}
// μ μΌμ΄μ€μ λͺ¨λ ν¬ν¨μλλ©΄ μΈ λ² λ±μ₯ν λ¬Έμκ° μ½μ
λ κ²½μ°λ―λ‘, νμΉΈ 건λλ΄λ€.
i ++;
// ν΄λΉ λ¬Έμ νμ μ΄κΈ°ν μμΌμ£ΌκΈ°
alpa[str.charAt(i) - 'A'] = 0;
}
}
result = (flag) ? "OK" : "FAKE";
System.out.println(result);
}
scan.close();
}
}
νμ΄
κ° λ¬Έμκ° μΈ λ² λ±μ₯ν λ ν λ² λ λ¬Έμκ° μ½μ λλ€.
μ£Όμ΄μ§ λ¬Έμμ΄μ΄ λλ λκΉμ§ μ 쑰건μ λ§μ‘±νλ©΄ μ§μ§ λ©μμ§κ³ , λ§μ‘±νμ§ λͺ»νλ©΄ κ°μ§ λ©μμ§λ€.
"AABCAABBB"
μμμ μμΉ ν A, Bκ°μκ²½μ° μ΄μ μ λ¬Έμκ° 3λ²μμΌλ―λ‘ ν λ² λ μ½μ λ κ²½μ°λ€.
λ°λΌμ λ¬Έμμ΄μ λκΉμ§ νμνλ©΄μ μμ€ν€μ½λκ°μ κΈ°μ€μΌλ‘ ν΄λΉ λ¬Έμλ₯Ό μΈλ±μ€λ‘ λ°°μ΄μ κ°μ μ¦κ°μν¨λ€.
alpa[str.charAt(i) - 'A'] ++;
1) κ·Έ ν λ¬Έμμ΄μ΄ 3λ²μμκ²½μ°, μμ μ λ ₯ 2λ²μ§Έμ κ°μ΄ λ¬Έμμ΄μ΄ λ§μ§λ§μΈ κ²½μ°λ κ³ λ €ν΄μΌνλ€.
// λ§μ§λ§ λ¬Έμμ λλ¬νμλ λμΌν λ¬Έμκ° 3λ²μ΄λ©΄ λ¬Έμκ° μ½μ
μ΄ μλκ²½μ°μ΄λ―λ‘ νλ¦° λ¬Έμ.
if(i == str.length()-1) {
flag = false;
break;
}
2) λ§μ½ 3λ² μ¨ λ¬Έμμ λ€μ λ¬Έμκ° λ€λ₯Όκ²½μ°
AAA -> AAAB
μμ κ°μκ²½μ°λ 쑰건μ λ§μ‘±νμ§ λͺ»νλ―λ‘ κ°μ§ λ©μμ§λ€.
// λ¬Έμλ₯Ό ν λ² μ½μ
ν΄μΌνλλ° μλ€ λ€λ₯΄λ©΄ νλ¦° λ¬Έμ.
if(str.charAt(i) != str.charAt(i+1)) {
flag = false;
break;
}
3) μ μΌμ΄μ€μ ν¬ν¨μ΄ μλ κ²½μ°, λ¬Έμκ° νλλ μ½μ λ κ²½μ°μ΄λ―λ‘ νμΉΈ λ°μ΄λκ³ , ν΄λΉ λ¬Έμμ νμλ₯Ό μ΄κΈ°ννλ€.
// μ μΌμ΄μ€μ λͺ¨λ ν¬ν¨μλλ©΄ μΈ λ² λ±μ₯ν λ¬Έμκ° μ½μ
λ κ²½μ°λ―λ‘, νμΉΈ 건λλ΄λ€.
i ++;
// ν΄λΉ λ¬Έμ νμ μ΄κΈ°ν μμΌμ£ΌκΈ°
alpa[str.charAt(i) - 'A'] = 0;
4) λ§μ§λ§μΌλ‘ flag κ°μ κΈ°μ€μΌλ‘ trueλ©΄ μ§μ§ λ©μμ§, falseλ©΄ κ°μ§ λ©μμ§μ΄λ€.
result = (flag) ? "OK" : "FAKE";
System.out.println(result);
'Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] 5032λ²: νμ° μλ£(ꡬν, μν) (0) | 2020.04.10 |
---|---|
[λ°±μ€] 3054λ²: νΌν°ν¬ νλ μ(ꡬν) (0) | 2020.04.10 |
[λ°±μ€] 2246λ²: μ½λ μ μ (ꡬν) (0) | 2020.04.09 |
[Codeforces] 1080A: Petya and Origami (0) | 2020.04.09 |
[λ°±μ€] 14502λ²: μ°κ΅¬μ(DFS, BFS, μμ νμ) (0) | 2020.04.08 |
λκΈ