728x90
https://www.acmicpc.net/problem/9324
- 문제를 대충 읽어서 3번째만 바뀌는 줄 알았다. 알고보니 3번 째 나올 때마다 계속 두 번씩 나와야했다;;
- ex) A B A B AA B A B A B AA
내 풀이(HashMap 사용)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int testCaseCnt = Integer.parseInt(br.readLine().strip());
Map<Character, Integer> map;
for (int tc =0; tc<testCaseCnt; tc++) {
map = new HashMap<>();
String word = br.readLine().strip();
boolean isTrue = true;
for (int i =0; i<word.length(); i++) {
char c = word.charAt(i);
//처음보는 글자일 때
if (map.get(c) == null) {
map.put(c, 1);
continue;
}
int cnt = map.get(c);
if (cnt == 2) {
if (i == word.length()-1 || word.charAt(i+1) != c) {
//세 번째 숫자인데 뒤에 같은 글자가 안따라붙으면 fake
isTrue = false;
break;
}
i++;
map.put(c, 0);
} else {
map.put(c, cnt+1);
}
}
if (isTrue)
System.out.println("OK");
else
System.out.println("FAKE");
}
}
}
- 한 글자씩 떼보면서 HashMap에 해당 글자의 개수를 센다
- 글자가 3번이 나오면 다음 글자가 같은 글자인지 확인 후, HashMap에 개수를 0으로 넣고 인덱스를 하나 증가시킨다
- 만약 세 번째 글자일 때 마지막 글지이거나 뒷 글자가 나와 같지 않은 경우 FAKE이다.
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[Java] 백준 1764 듣보잡 - 실버4 (1) | 2023.08.25 |
---|---|
[Java] 백준 16948 데스 나이트 - 실버1 (0) | 2023.07.16 |
[Java] 백준 문자열 브론즈 모음 (0) | 2023.07.16 |
[Java] 백준 10935 BASE64 인코딩 디코딩 (0) | 2023.07.16 |
[Java] 백준 10930 SHA-256 (0) | 2023.07.16 |